【发布时间】:2021-09-03 07:16:08
【问题描述】:
我在下面的组件中有一个函数
getProperties(data) {
let type = this.route.snapshot.paramMap.get('type');
const types = {
"easy": {
adviceEndpoint: this.apiService.getEasy(),
}, "medium": {
adviceEndpoint: this.apiService.getMedium(),
}
}
return types[type];
}
apiService return httpClient get,post 等方法。如上所示,我成功注入了所有依赖项。有趣的是,我可以选择一种类型并返回adviceEndpoint 和adviceFeatures,但它无法获取adviceEndpoint,它当我将其打印到控制台Object{adviceEndpoint: undefined}
fdescribe('ExampleComponent', () => {
let component: ExampleComponent;
let fixture: ComponentFixture<ExampleComponent>;
let el: DebugElement;
let route: any;
beforeEach(async(() => {
const apiServiceSpy = jasmine.createSpyObj('ApiService',
["getEasy", "getMedium"]
);
TestBed.configureTestingModule({
imports: [NgbModule, CommonModule, RouterModule.forRoot([])],
declarations: [ExampleComponent],
providers: [
{ provide: ApiService, useValue: apiServiceSpy },
{
provide: ActivatedRoute,
useValue: {
snapshot: {
paramMap: convertToParamMap({ type: 'easy' })
}
}
}
]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(ExampleComponent);
route = TestBed.inject(ActivatedRoute);
component = fixture.componentInstance;
el = fixture.debugElement;
fixture.detectChanges();
});
}));
it("should return true properties", () => {
const properties = component.getProperties();
console.log(properties);
//Object{adviceEndpoint: undefined}
});
});
【问题讨论】:
-
据我所见,我认为
let type = this.route.snapshot.paramMap.get('type');不会从测试中返回“简单”或“中等”,您需要模拟该路线并返回您正在测试的任何一个,简单或中等
标签: javascript angular typescript jasmine karma-runner