Javascript Jasmine未捕获Try/Catch中的错误
我一直在使用Jasmine框架编写一些angularjs测试。我被Jasmine网站上的文档弄糊涂了 “toThrow”匹配器用于测试函数是否引发异常 如果我不包装提交的正文,Jasmine将通过以下测试Javascript Jasmine未捕获Try/Catch中的错误,javascript,angularjs,jasmine,karma-runner,Javascript,Angularjs,Jasmine,Karma Runner,我一直在使用Jasmine框架编写一些angularjs测试。我被Jasmine网站上的文档弄糊涂了 “toThrow”匹配器用于测试函数是否引发异常 如果我不包装提交的正文,Jasmine将通过以下测试 it("should not save to server if user is invalid", function () { userServiceMock.user.id = false; expect(function () { submissionServ
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运行测试。您将测试您的函数是否会抛出错误。为此,不能设置将向try-catch/block抛出错误的块,因为即使在函数调用的函数中抛出错误,也不会在该函数中抛出错误 如何捕获
toThrow
匹配器中的错误,并且只有在调用匹配器中的catch
块时测试才会通过:
try {
actual();
} catch (e) {
threw = true;
thrown = e;
}
您将测试函数是否会抛出错误。为此,不能设置将向try-catch/block抛出错误的块,因为即使在函数调用的函数中抛出错误,也不会在该函数中抛出错误 如何捕获
toThrow
匹配器中的错误,并且只有在调用匹配器中的catch
块时测试才会通过:
try {
actual();
} catch (e) {
threw = true;
thrown = e;
}
那么,我的实际代码不应该包装在try/catch结构中?是的,错误必须从jasmine matcher中捕获,否则测试失败。因此,我将对我的try/catch块进行注释以进行测试,并删除注释以执行actucl??那么我的实际代码不应该包装在try/catch结构中?是的,必须从jasmine matcher捕获错误,否则测试失败。因此,我将为测试注释我的try/catch块,并删除actucl执行的注释??