我必须在单元测试中模拟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调用?
感谢任何帮助。在此先感谢。