我们有以下测试:
"should not call 'getCustomers' when 'getAvailableYears' throws"
如果我们catch
中有getAvailableYears
,那么以前就行了,但现在我们不再需要捕获了,因为我们有全局错误处理。
这就是getAvailableYears
的样子:
this.service.getAvailableYears().then((availableYears) => {
this.years = availableYears;
this.loadCustomers();
});
这是测试,当我们有catch
:
it("should not call 'getCustomers' when 'getAvailableYears' throws", fakeAsync(() => {
// Arrange
getAvailableYearsSpy = spyOn(service, "getAvailableYears").and.returnValue(Promise.reject("reason"));
getCustomersSpy = spyOn(service, "getCustomers").and.returnValue(Promise.resolve(createCustomersTestData()));
// Act
fixture.detectChanges();
tick();
// Assert
expect(getCustomersSpy).not.toHaveBeenCalled();
}));
现在我收到以下错误:
错误:未捕获(在承诺中):原因
如果我没有reject
,我该如何使用catch
?如果承诺被拒绝,我如何测试无法调用某些内容?
答案 0 :(得分:1)
如果没有捕获Promise-Rejection,它将冒泡并抛出错误。所以也许你应该加上对象这样的错误的期望
expect(getAvailableYearsSpy).toThrow();