断言 Sinon 间谍的最近通话参数

Assert on most recent call arguments for Sinon spy

在我的实现代码中,我有一个可能被调用多次的更新函数。更新完成,也就是说,如果你调用updateFn(A),那么updateFn(B),"A"就没有关系,只有"B"会生效。我可以这样写断言:

assert(updateFn.calledWith(B));

这在表面上似乎是一个很好的测试。但是,如果实际调用是 updateFn(A)updateFn(B)updateFn(A),那么该断言仍然会通过,这对于所讨论的系统来说是不正确的行为。

我想写的是仅对最近调用的参数的断言。 Sinon 有什么好的方法吗?

使用 Chai 断言,您可以:

expect(updateFn.lastCall.args).to.eql([B]);

其中 [B] 是预期参数的数组。