小编Luk*_*kas的帖子

如何对 NestJs http 请求进行完全覆盖的单元测试?

我在测试我的 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)

unit-testing typescript jestjs nestjs

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

jestjs ×1

nestjs ×1

typescript ×1

unit-testing ×1