mocha-sinon
Integration between mocha and sinon, allowing for automatic cleanup of spies
What you should do instead of using this module
This module is stupidly simple. You can do it yourself and have one fewer dependency with:
beforeEach(function() {
if (null == this.sinon) {
this.sinon = sinon.sandbox.create();
} else {
this.sinon.restore();
}
});
Installation
via npm:
$ npm install --save-dev mocha-sinon
Usage
Server-side
Require it somewhere in your spec helper file (easier, better)
require('mocha-sinon');
Using mocha's flakey --watch flag
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:
require('mocha-sinon')();
Note that the difference between this method and the first method is that this is calling mocha-sinon's exported function.
Browser-side
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.
Example
var child_process = require('child_process')
, events = require('events')
, chai = require('chai')
, expect = chai.expect
;
chai.use(require('sinon-chai'));
require('mocha-sinon');
describe('a shell command', function(){
beforeEach(function(){
var fakeChild = this.fakeChild = {
stdout: new events.EventEmitter()
};
this.sinon.stub(child_process, 'spawn', function(){
return fakeChild;
});
});
it('gets called', function(done){
someFunction(function(err){
expect(child_process.spawn).to.have.been.calledWith('/usr/bin/env', ['rm', '-rf', '/']);
});
});
});