gpt4 book ai didi

javascript - Jasmine 未捕获 Try/Catch 中的错误

转载 作者:行者123 更新时间:2023-11-28 02:11:34 24 4
gpt4 key购买 nike

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

The 'toThrow' matcher is for testing if a function throws an exception

如果我不将submission.save的正文包装在try/catch中,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 来运行我的测试。

最佳答案

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

什么jasmine does是捕获 toThrow 匹配器中的错误,并且仅当调用匹配器中的 catch block 时测试才会通过:

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

关于javascript - Jasmine 未捕获 Try/Catch 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com