mocha-sinon
Version:
mocha integration for sinon
92 lines (63 loc) • 2.33 kB
Markdown
mocha-sinon
====================
[](http://travis-ci.org/elliotf/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:
```javascript
// require sinon somehow and in your test helper, do:
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)
```javascript
require('mocha-sinon');
```
#### Using mocha's flakey --watch flag
For background, please see [issue #1](https://github.com/elliotf/mocha-sinon/issues/1) on this project.
If you use mocha's [flakey watch flag](https://github.com/visionmedia/mocha/pull/266), 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:
```javascript
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](http://requirejs.org/), so mocha-sinon does not yet support requirejs. Pull requests are welcome, though.
## Example
```javascript
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', '/']);
});
});
});
```