使用Jasmine toThrowError时似乎无法捕获错误

时间:2016-11-21 19:08:16

标签: angular typescript jasmine

我开始尝试jasmine并且我想使用toThrowError()函数,但我的测试不想成功。

我有一个函数,我抛出一个错误:

test.service.ts

test(list:{}){ 
    if(list == null){
        throw new TypeError();
    }
    else{
        // do something...
    }
}

我的测试:

it('shall throw an error', inject()
    [
        TestService
    ],
    (
        testService: TestService
    ) => {
        let test = testService.test(null);
        expect(test).toThrowError(TypeError);
    }
);

我的测试因Uncaught TypeError而失败(当我称之为“我在try catch中执行此操作时)”。

2 个答案:

答案 0 :(得分:2)

你应该期望一个用null调用你的函数的函数抛出一个错误。现在你期待调用函数的结果抛出一个错误,这是不会发生的。

expect(() => testService.test(null)).toThrowError(TypeError);

答案 1 :(得分:1)

  • 你可能不得不像这样here抛出间谍的错误。

  • 你甚至在抛出错误之前都在期待

    spyOn(foo, "setBar").and.throwError("quux");