如何测试Sinon.js的函数调用顺序?
例如,我在对象中有三(3)个处理程序,并希望定义处理程序调用的顺序。有可能吗?
如Gajus所述,callOrder()
不再可用,您可以使用callBefore()
,calledAfter()
,calledImmediatelyBefore()
和calledImmediatelyAfter()
。
我发现通过使用spy.getCalls()
获得所有呼叫并对呼叫参数进行assert.deepEqual()
来断言一个间谍的顺序呼叫是最方便的。
示例-确认console.log()
调用的顺序。
// func to test
function testee() {
console.log(`a`)
console.log(`b`)
console.log(`c`)
}
在您的测试用例中
const expected = [`a`, `b`, `c`]
const consoleSpy = spy(console, 'log')
testee()
const result = consoleSpy.getCalls().map(({ args }) => args[0])
assert.deepEqual(result, expected)