我有一个用于测试的Wiremock后端设置,所以我希望XHR调用在测试期间进行。我不想使用Spy或HttpClientTestingModule
来模拟它们。
这是我正在运行的测试的示例。我的想法是运行此测试,等待subscribe
的处理程序被调用,然后调用Jasmine的done()
移至下一个测试。
it('should return a valid response when creating an event', (done) => {
const service: EventsService = TestBed.get(EventsService);
service.createEvent('Party at my house').subscribe(data => {
expect(data['id']).toBe(1);
expect(data['name']).toBe('Party at my house');
done();
});
});
service.createEvent()
仅对Wiremock后端进行标准的http.post()
调用。
createEvent(eventName: string): Observable<Event> {
return this.http.post<Event>(environment.baseEndpointUrl + '/events', {name: eventName});
}
但是,永远不会调用该处理程序,因此永远不会调用done(),所以我自然会收到错误:超时-jasmine.DEFAULT_TIMEOUT_INTERVAL 消息指定的超时内未调用异步回调。 >
在进入下一个测试之前,如何确保已调用处理程序?