mocha integration for sinon


Integration between mocha and sinon, allowing for automatic cleanup of spies

via npm:

$ npm install --save-dev mocha-sinon

Require it somewhere in your spec helper file (easier, better)


or, on your command line calling mocha:

$ mocha -R mocha-sinon test.js

For background, please see issue #1 on this project.

If you use mocha's flakey watch flag, there is experimental support for it. Note that the first method of requiring the mocha-sinon is the best way to do it.

You can put the following block in your spec helper and it might work:


Note that the difference between this method and the first method is that this is calling mocha-sinon's exported function.

Source the mocha-sinon file after you have sourced mocha and sinon, and it will "do the right thing"

Unfortunately, I'm not familiar with requirejs, so mocha-sinon does not yet support requirejs. Pull requests are welcome, though.

var child_process = require('child_process')
  , events        = require('events')
  , chai          = require('chai')
  , expect        = chai.expect
describe('a shell command', function(){
    var fakeChild = this.fakeChild = {
      stdout: new events.EventEmitter()
    this.sinon.stub(child_process, 'spawn', function(){
      return fakeChild;
  it('gets called', function(done){
      expect(child_process.spawn).to.have.been.calledWith('/usr/bin/env', ['rm', '-rf', '/']);

This module is stupidly simple. You can do it yourself with:

var sinon = require('sinon');
beforeEach(function() {
  this.sinon = sinon.sandbox.create();