Skip to content

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

License

Notifications You must be signed in to change notification settings

elliotf/mocha-sinon

Repository files navigation

mocha-sinon

Build Status

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:

// 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)

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', '/']);
    });
  });
});

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published