如何为服务页面Jasmine编写测试用例? 我尝试为以下功能编写单元测试。
service.page.ts
get(): Observable<Array<modelsample>> {
const endpoint = "URL" ;
return this.http.get<any>(endpoint)
.pipe(
map((item) => {
return item.data.items.map(item => {
return new department(item.name, item.id, item.isActive)
})
})
)
};
我写了
service.spec.ts
it('should retrieve list of via GET ', (done) => {
const dummydata: APIResponse<modelsample> = {
isSuccess: true,
message: 'Departments retrieved successfully',
data: [
{
name: 'string',
id: 8,
isActive:true
},
{
name: 'string',
id: 8,
isActive:true
},
]
};
expect(service.get).toBeTruthy();
service.get().subscribe((data) => {
expect(data.length).toBe(2);
expect(data).toEqual(dummydata.data);
done();
});
const request = httpMock.expectOne('url');
expect(request.request.method).toEqual('GET');
request.flush(dummydata.data);
});
这是我的API响应界面
export interface APIResponse<T> {
isSuccess: boolean;
message: string;
errorCode?: string;
data?:T[];
}
我收到错误“地图”未定义”
答案 0 :(得分:1)
您的虚拟数据不正确。它期望items
对象具有data
属性。 (item.data.items.map
)
您应该考虑使其类似于:
const dummydata: APIResponse<modelsample> = {
// ...
data: {
items: [
{
name: 'string',
id: 8,
isActive:true
},
{
name: 'string',
id: 8,
isActive:true
},
]
}
};