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

Posted

技术标签:

【中文标题】在 Jasmine/Karma 测试中使用 mockError 时,apollo-angular 会抛出错误【英文标题】:apollo-angular throws Error when using a mockError on Jasmine/Karma testing 【发布时间】:2021-09-06 02:18:51 【问题描述】:

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

当我调用这个测试时,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();
  ));

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

提前致谢!

【问题讨论】:

【参考方案1】:

所以....

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;
      ;
    

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

我所要做的就是:

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

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

对于遇到相同问题的任何人,这就是答案!

【讨论】:

以上是关于在 Jasmine/Karma 测试中使用 mockError 时,apollo-angular 会抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 Angular 和 Jasmine/Karma 的私有方法进行测试和代码覆盖

在使用 Jasmine Karma 编写测试用例时,我无法涵盖正在执行的处理程序

如何在 (jasmine + karma) 中为以下方法编写测试,该方法在构造函数中注入了 ComponentFactoryResolver 和 ApplicationRef

Angular - Jasmine/karma - 订阅 lambda 表达式未执行

使用 jasmine / karma 进行 Angular 4 单元测试和 http post mocking - 如何修复