【问题标题】:Expect not toThrow function with arguments - Jasmine期望不要抛出带参数的函数 - Jasmine
【发布时间】:2017-03-23 12:37:35
【问题描述】:

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

expect(myFunc).not.toThrow();

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

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

【问题讨论】:

    标签: javascript testing jasmine karma-runner karma-jasmine


    【解决方案1】:

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

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

    您还可以使用bind 创建函数的新“版本”,在调用时将传递提供的参数:

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

    【讨论】:

    • 感谢我所寻找的!
    • 或带箭头功能:expect(() => myFunc(arg1, arg2, arg3)).not.toThrow();
    【解决方案2】:

    你可以使用.not方法:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-12-06
        • 2017-03-24
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-12
        相关资源
        最近更新 更多