期望不带参数的 toThrow 函数 - Jasmine

Expect not toThrow function with arguments - Jasmine

我有一个函数可以获取 3 个参数。我想检查这个函数没有抛出错误。 我做了这样的事情:

expect(myFunc).not.toThrow();

问题是myFunc需要获取参数。如何发送参数?

P.S 我试图传递给它参数,但我得到错误 myFunc(arg1, arg2, arg3) 不是一个函数。

toThrow 匹配器需要将函数作为参数传递给 expect,因此您可以简单地将函数调用包装在匿名函数中:

expect(function() {
    myFunc(arg1, arg2, arg3);
}).not.toThrow();

您还可以使用 bind 创建新的 'version' 函数,调用时将传递提供的参数:

expect(myFunc.bind(null, arg1, arg2, arg3)).not.toThrow();

您可以使用.not方法:

expect(() => actionToCheck).not.toThrow()

https://jestjs.io/docs/expect#not

如果您的函数抛出异常,测试无论如何都会失败。所以没有必要明确地为它准备一个 expect 语句。问题是,如果你的测试中没有 expect 语句,它会警告你没有期望。解决方案是有一个空的 expect 语句。

myFunc();
expect().nothing();

这只是另一种方法。 如果您想确保 myFunc() 完全完成或只是挂断,这也很有用。