apollo-angular 在 Jasmine/Karma 测试中使用 mockError 时抛出错误

apollo-angular throws Error when using a mockError on Jasmine/Karma testing

多年来我一直在 queries/mutations 上测试此类错误,但就在现在,我遇到了一个我似乎无法弄清楚的错误。

当我调用此测试时,Apollo 正在为我创建的 errorMock 抛出错误。有没有人遇到过这个错误?

这很有趣,因为使用相同逻辑的其他测试工作得很好,只有这个

  it('should call errorHandler if getThirdPartyCompanies requests returns an error', fakeAsync(() => {
    const spyOnHandleError = spyOn(component['errorHandlerService'], 'handleError');

    component.getThirdPartyCompanies();
    const op = controller.expectOne(thirdPartyCouriersGraphqlModel);
    op.flush(
      {
        errors: [new GraphQLError('a')]
      }
    );
    controller.verify();
    tick(100);
    flush();

    expect(spyOnHandleError).toHaveBeenCalled();
  }));

关于为什么会发生这种情况的任何提示?

提前致谢!

所以....

public getThirdPartyCompanies(): void {
      console.log('getThirdPartyCompanies');
      this.courierService.getThirdPartyCourierList(this.cityId)
                         .pipe(takeUntil(this.subscriptionDestroyer))
                         .subscribe((req) => {
        this.thirdPartyCourierList = req.data.thirdPartyCourierCompanies;
        this.loadingThirdies = false;
      }
      ), err =>{
        this.errorHandlerService.handleError(err);
        this.loadingThirdies = false;
      };
    }

这是我用于通话的代码。请注意,我在错误调用之前关闭了可观察对象。

我所要做的就是:

 }, err =>{
            this.errorHandlerService.handleError(err);
            this.loadingThirdies = false;
          };
        });

以正确的方式关闭订阅,我让它工作了...

对于遇到同样问题的人,这里是答案!