在存根

时间:2017-07-13 21:21:57

标签: sinon

我已经通过文档了解了stub.callsArgWith究竟是什么:     http://sinonjs.org/releases/v1.17.7/stubs/

但是当我们将它链接起来时,我无法理解它是什么意义:

stub.callsArgWith(1, null, "ok")
    .callsArgWith(1, new Error("Error!"));

所以,基本上它的意思是索引1处的param是一个回调函数,它应该用第一个param = null和第二个param调用为“ok”。但是我无法理解的是在什么情况下我们将callArgWith链接起来以及它们以什么顺序被使用。 请帮助我理解上面两行的含义究竟是什么,它们将如何执行,意味着何时需要“确定”以及何时会返回错误。

1 个答案:

答案 0 :(得分:0)

在早期版本的Sinon(特别是版本1.5 - 1.7)中,这就是您描述连续调用行为的方式。

否则,第二次callsArgWith调用会替换第一个callsArgWith的行为。

所以在你的例子中(假设Sinon的版本是v1.5 - 1.7):

stub.callsArgWith(1, null, "ok")
    .callsArgWith(1, new Error("Error!"));

第一次调用stubed函数时, 它将使用参数null"ok"调用存根函数的第二个参数。

第二次调用存根函数时,它将使用Error对象调用存根函数的第二个参数。

所以在你的例子中(假设Sinon的版本是 v1.5 - 1.7):

stub.callsArgWith(1, null, "ok")
    .callsArgWith(1, new Error("Error!"));

每次调用存根函数时,它都会使用Error对象调用存根函数的第二个参数。

文档链接:http://sinonjs.org/releases/v1.17.7/stubs/#defining-stub-behavior-on-consecutive-calls