Sinon.js结合被调用次数

时间:2018-08-29 04:29:00

标签: unit-testing sinon

我知道使用sinon.js可以测试间谍被打过一定次数:

sinon.assert.calledTwice(mySpy.someMethod);

您可以测试是否使用某些参数调用了间谍:

sinon.assert.calledWith(mySpy.someMethod, 1, 2);

但是如何将它们组合起来以测试某个方法被调用了特定次数的特定参数呢?理论上是这样的:

sinon.assert.calledTwiceWith(mySpy.someMethod, 1, 2);

1 个答案:

答案 0 :(得分:3)

使用spy可以访问使用getCall() and getCalls()对其进行的呼叫。每个Spy call都可以使用calledWithExactly()之类的方法进行测试:

import * as sinon from 'sinon';

test('spy', () => {

  const spy = sinon.spy();
  spy(1, 2);
  spy(3, 4);
  expect(spy.callCount).toBe(2);
  expect(spy.getCall(0).calledWithExactly(1, 2)).toBe(true);
  expect(spy.getCall(1).calledWithExactly(3, 4)).toBe(true);

});