微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 Jasmine/Karma 测试中使用 mockError 时,apollo-angular 抛出错误

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

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

image

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

提前致谢!

解决方法

所以....

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

以正确的方式关闭订阅,我就可以正常工作了...

对于任何有同样问题的人来说,这就是答案!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。