【发布时间】:2018-09-04 17:37:30
【问题描述】:
我对 Jasmine 和 Angular 中的单元测试还很陌生,所以请多多包涵 :)
我正在尝试为应该返回 ArtworkDetail 类型的对象的方法编写单元测试,但不希望服务执行实际的 http 调用。我听说过模拟数据和模拟服务,但我不知道自己该怎么做。我是在我的单元测试文件中创建一个模拟对象还是创建一个模拟服务?任何指针表示赞赏!
app.component.ts
public setArtworkDetail(id: string): void {
this.details = undefined;
this.artworksService.getArtworkDetail(id)
.subscribe((detailData: ArtworkDetail) => {
this.details = detailData;
});
}
app.component.spec.ts
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent,
IndexComponent,
DetailsComponent,
NavbarComponent
],
providers: [
{provide: ArtworksService, class: MockArtworksService}
]
}).compileComponents();
}));
it('should return an ArtworkDetail when calling setArtworkDetail()', (() => {
...
}));
artwork-detail.model.ts
export interface ArtworkDetail {
id: string;
title: string;
url: string;
year: number;
description: string;
artist: string;
}
【问题讨论】:
标签: angular unit-testing http jasmine mocking