我已经通过文档了解了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链接起来以及它们以什么顺序被使用。 请帮助我理解上面两行的含义究竟是什么,它们将如何执行,意味着何时需要“确定”以及何时会返回错误。
答案 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