【发布时间】:2023-03-22 00:15:02
【问题描述】:
您好,我正在尝试在我的 jasmine 单元测试中对 API 进行模拟 GET 调用,它返回给我 url not found 错误。
我在 service.spec 文件中这样做了:
it('GET call for store details API', waitForAsync(inject([HttpTestingController, AuthService],
(httpClient: HttpTestingController, authService: AuthService) => {
var obj = {
"IsSuccess": true,
"Result": [
{
"Details": "Test"
}
]
}
authService.getStoreDetails()
.subscribe((get: any) => {
expect(get).toBe(obj);
});
const successRequest = httpTestingController.expectOne(environment.baseUrl1 + '/api/details/10/0');
expect(successRequest.request.method).toEqual('GET');
successRequest.flush(obj);
httpTestingController.verify();
})));
当我在没有多个端点 ex; api/user 的其他 GET 调用中做同样的事情时,测试工作正常。对此以及使用某些参数的 GET 解决方案是什么?
编辑:-
添加 service.ts
createId() {
const ids = localStorage.getItem('ids');
return ids
}
// GET API for Store Details
getStoreDetails(): Observable<any> {
let headers = this.createAuthrorizationHeader();
let idd = this.createId();
var id = Number(JSON.parse(idd!));
return this.http
.get(`${environment.baseUrl1}/api/details/${id}/0`, { headers:
headers })
.pipe(tap(res => {
console.log(res);
retry(2),
catchError(this.handleError)
})
)
}
【问题讨论】:
标签: angular karma-jasmine