我在测试我的 NestJs 服务时遇到问题。我写了一个方法,它执行 GET http 请求:
getEntries(): Observable<Entries[]> {
Logger.log(`requesting GET: ${this.apiHost}${HREF.entries}`);
return this.http.get(`${this.apiHost}${HREF.entries}`).pipe(
catchError((error) => {
return throwError(error);
}),
map(response => response.data)
);
}
Run Code Online (Sandbox Code Playgroud)
我想为这个方法编写一个单元测试。该单元测试应覆盖该方法的所有行。我尝试使用“nock”包来模拟这个http请求,但无论我如何尝试,覆盖结果总是相同的。
return throwError(error);
map(response => response.data);
Run Code Online (Sandbox Code Playgroud)
这两行被揭开了。
这是我的测试文件:
describe('getEntries method', () => {
it('should do get request and return entries', () => {
nock('http://localhost:3000')
.get('/v1/entries')
.reply(200, {
data: require('../mocks/entries.json')
});
try {
const result = service.getEntries();
result.subscribe(res => {
expect(res).toEqual(require('../mocks/entries.json'));
});
} catch (e) {
expect(e).toBeUndefined();
}
});
it('should return error if request failed', () …Run Code Online (Sandbox Code Playgroud)