HttpTestingController如何在Angular5中工作?

时间:2018-02-21 02:04:15

标签: angular unit-testing mocking httpclient

我必须在单元测试中模拟http请求。互联网上的所有示例都建议先提出原始请求,然后模拟以下请求。

it('should mock the requests', (done) => {
  const testUrl = 'http://localhost:3001/api/users';
  const service = TestBed.get(SomeService);
    service
       .getUserData()
       .then((users) => {
        expect(users.length).toBe(3);
        done();
        })
       .catch(done.fail)
httpMock.expectOne(testUrl).flush(users);
httpMock.verify();
});

为什么我必须先提出原始请求?然后嘲笑请求?实际上,我刷新的模拟响应将通过getUserData()方法得到?

此外,如果服务中的getUserData()方法中有两个或更多api调用,我最终会出现以下错误

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

如何模拟多个http调用?

感谢任何帮助。在此先感谢。

0 个答案:

没有答案