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;
};
});
以正确的方式关闭订阅,我让它工作了...
对于遇到同样问题的人,这里是答案!
多年来我一直在 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;
};
});
以正确的方式关闭订阅,我让它工作了...
对于遇到同样问题的人,这里是答案!