订阅处理程序未在Jasmine测试中被调用

时间:2019-05-24 18:54:22

标签: angular jasmine rxjs

我有一个用于测试的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 消息指定的超时内未调用异步回调。 >

在进入下一个测试之前,如何确保已调用处理程序?

0 个答案:

没有答案