角度单位测试承诺拒绝没有捕获

时间:2017-07-20 18:41:06

标签: angular jasmine

我们有以下测试:

"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?如果承诺被拒绝,我如何测试无法调用某些内容?

1 个答案:

答案 0 :(得分:1)

如果没有捕获Promise-Rejection,它将冒泡并抛出错误。所以也许你应该加上对象这样的错误的期望 expect(getAvailableYearsSpy).toThrow();