обработчик подписки не вызывается в тестах Жасмин - PullRequest
0 голосов
/ 24 мая 2019

У меня есть настройка 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 .

Как мне убедиться, что обработчик вызывается перед переходом к следующему тесту?

...