如何使Sinon.JS callCount增量

时间:2016-02-17 19:38:17

标签: javascript mocha sinon chai

所以我有这样的Chai / Mocha / Sinon测试:

import sinon from 'sinon'

describe(`My Test`, () => {
  it(`should track the number of calls`, () => {
    function testMe() {
      console.log(`test me`)
    }
    const spy = sinon.spy(testMe)
    testMe()
    console.log(spy.getCalls())
    console.log(spy.callCount)
  })
})

测试运行时,会记录以下内容:

test me
[]
0

这令人费解。我做错了什么?

1 个答案:

答案 0 :(得分:4)

如果您想要常规功能的间谍,您可以通过调用间谍来跟踪对该功能的调用的唯一方法:

it(`should track the number of calls`, () => {
  function testMe() {
    console.log(`test me`)
  }
  const spy = sinon.spy(testMe)
  spy()
  console.log(spy.getCalls())
  console.log(spy.callCount)
})

如果testMe是对象(或类的方法)的属性,则可以调用原始属性,因为在这种情况下,Sinon可以用窥探版本替换原始属性。例如:

describe(`My Test`, () => {
  it(`should track the number of calls`, () => {
    const obj = {
      testMe() {
        console.log(`test me`)
      }
    };
    const spy = sinon.spy(obj, 'testMe')
    obj.testMe();
    console.log(spy.callCount)
  })
})