【发布时间】:2020-10-29 22:17:14
【问题描述】:
希望你能帮我解决这个困扰我一段时间的事情。
我正在编写一些伴随我编写的组件的单元测试,无论我做什么,我都无法修复这个 Expected spy getTopRatedMedia 被称为问题并不断出现。
这个测试应该检查一个服务方法是否已经被触发,但是它一直在记录“Expected spy getTopRatedMedia to have been called。”
media-list-page.component.ts
async onMediaChange(media: string): Promise<void> {
this.typeOfMedia = media;
if (!this.searchParam || this.searchParam.length <= 2) {
this.typeOfMedia = media;
try {
this.loader.show();
if (!this.configurationString) {
await this.stateService.getConfiguration();
}
let response = await this.api.getTopRatedMedia(media);
this.mapMedia(response);
this.loader.hide();
} catch (err) {
this.loader.hide();
console.log(err);
}
} else {
this.onSearchChange(this.searchParam);
}
}
media-list-page.component.spec.ts
fdescribe('MediaListPageComponent', () => {
let component: MediaListPageComponent;
let fixture: ComponentFixture<MediaListPageComponent>;
let api: MockedApiService;
let stateService: MockedStateService;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [RouterModule.forRoot([]), HttpClientTestingModule],
declarations: [MediaListPageComponent, LoaderComponent],
providers: [
{ provide: ApiService, useClass: MockedApiService },
{ provide: StateService, useClass: MockedStateService },
],
}).compileComponents();
});
beforeEach(async () => {
fixture = TestBed.createComponent(MediaListPageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
await component.ngOnInit();
api = new MockedApiService();
stateService = new MockedStateService();
await fixture.whenStable();
});
//// FAILING TEST ////
it('should call the api method getTopRatedMedia()', () => {
const fixture = TestBed.createComponent(MediaListPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
spyOn(api, 'getTopRatedMedia').and.callThrough();
component.onMediaChange('shows');
fixture.detectChanges();
expect(api.getTopRatedMedia).toHaveBeenCalled();
});
mocks.ts
@Injectable({
providedIn: 'root',
})
export class MockedApiService {
getTopRatedMedia() {
return {
// returns a mocked object
};
}
感谢您的帮助:)
【问题讨论】:
标签: angular typescript testing jasmine karma-runner