Jasmine没有在Try / Catch中捕获错误

时间:2013-06-09 00:24:53

标签: javascript angularjs jasmine karma-runner

我一直在使用Jasmine Framework编写一些angularjs测试。我对Jasmine网站上的文档感到困惑

  

'toThrow'匹配器用于测试函数是否抛出异常

如果我不在try / catch中包装submission.save的主体,Jasmine将通过以下测试

it("should not save to server if user is invalid", function () {
    userServiceMock.user.id = false;
    expect(function () {
      submissionService.save(submission);
    }).toThrow();
   userServiceMock.user.id = 15;
});

我不认为在没有catch子句的情况下抛出错误是一种好习惯。所以我必须写错这种类型的测试。希望有人能澄清这一点。

我正在使用gruntjs和grunt-karma来运行我的测试。

1 个答案:

答案 0 :(得分:1)

您将测试您的函数是否会抛出错误。为此,您无法设置将错误抛出到try catch / block中的块,因此即使在函数调用的函数中抛出错误,也不会抛出此函数。

toThrow匹配器中捕获错误的jasmine does是什么,只有在匹配器中的catch块被调用时,测试才会通过:

    try {
      actual();
    } catch (e) {
      threw = true;
      thrown = e;
    }