development:testing:sinonjs:start

Sinon JS

If your test will also involve other 3rd party library, etc. multer. You better also check their own test cases for reference. e.g. https://github.com/expressjs/multer/tree/master/test

  • Check if a method is called
const spy = sinon.spy(object, 'method')
...
spy.restore() // remove spy
expect(spy.callCount).to.be.eql(n) // check if the method is call n times
  • Replace existing method with stub to avoid actually execute the method
  • define a fake function so that it will call that fake one when call
function fake() {  // a fake function to be called
}

const stub = sinon.stub(object, 'method').callFakes(fake) // you could also replace the fake with another real function
...
stub.restore() // remove stub
expect(stub.callCount).to.be.eql(n) // check if the method is call n times
  • define a return value no matter how you call the stub
const stub = sinon.stub(object, 'method').returns(val) // always return same val
...
const test = stub()
expect(test).to.be.eql(val)
stub.restore() // remove stub
expect(stub.callCount).to.be.eql(n) // check if the method is call n times
  • resolve a promise with same value no matter how you call the stub
const stub = sinon.stub(object, 'method').resolve(val) // always resolve same val
...
const test = await stub()
expect(test).to.be.eql(val)
stub.restore() // remove stub
expect(stub.callCount).to.be.eql(n) // check if the method is call n times
  • development/testing/sinonjs/start.txt
  • Last modified: 2019/01/13 13:05
  • by don.lee