在 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 - 如何修复