我一直在使用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来运行我的测试。
答案 0 :(得分:1)
您将测试您的函数是否会抛出错误。为此,您无法设置将错误抛出到try catch / block中的块,因此即使在函数调用的函数中抛出错误,也不会抛出此函数。
在toThrow
匹配器中捕获错误的jasmine does是什么,只有在匹配器中的catch
块被调用时,测试才会通过:
try {
actual();
} catch (e) {
threw = true;
thrown = e;
}