У меня есть настройка Backend для моих тестов, поэтому я хочу, чтобы вызовы XHR происходили во время теста. Я не хочу издеваться над ними, используя Spy или использовать HttpClientTestingModule
.
Вот пример теста, который я запускаю. Моя идея состояла в том, чтобы запустить этот тест, подождать, пока обработчик subscribe
не будет вызван, а затем вызвать Jasmine's 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()
просто делает стандартный http.post()
вызов к бэкэнду Wiremock.
createEvent(eventName: string): Observable<Event> {
return this.http.post<Event>(environment.baseEndpointUrl + '/events', {name: eventName});
}
Однако обработчик никогда не вызывается, поэтому done () никогда не вызывается, поэтому я, естественно, получаю Error: Timeout - асинхронный обратный вызов не был вызван в течение времени ожидания, указанного в сообщении jasmine.DEFAULT_TIMEOUT_INTERVAL .
Как мне убедиться, что обработчик вызывается перед переходом к следующему тесту?