【问题标题】:Throw error if stubbed function was called with the wrong arguments using Sinon如果使用 Sinon 使用错误的参数调用存根函数,则抛出错误
【发布时间】:2021-02-27 05:36:57
【问题描述】:

目前,sinon 能够创建一个存根,如果存在匹配的参数,它将返回给定的对象:

const methodStub = stub(service, 'method').withArgs("param1").returns("OK");

您甚至可以断言调用了正确的参数:

expect(methodStub).to.have.been.calledWith("param1");

问题:既然您明确表示您的存根方法将只允许param1,有没有办法在不明确使用 calledWith 方法的情况下进行断言?

【问题讨论】:

    标签: javascript mocha.js sinon


    【解决方案1】:

    我认为说“你的存根方法只允许"param1"”是不正确的。相反,您仅在使用参数"param1" 调用方法并且您已定义该存根返回"OK" 的情况下对方法进行存根。这不会禁止您的代码使用任何其他参数调用该方法,但是,当使用 "param1" 以外的任何其他参数调用它时,它将返回 undefined,因为您没有为任何其他参数设置返回值。

    关于使用calledWith的具体问题:

    由于您已经使用 .withArgs("param1") 约束了您的存根,那么正如您的问题所预料的那样,断言它已被 "param1" 调用等同于断言它已被调用。

    sinon-chai 有一个.called 属性,如果不使用.calledWith,它的行为与您的代码相同 - 如果使用"param1" 调用service.method,它将抛出一个AssertionError

    expect(methodStub).to.have.been.called

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2019-09-23
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多