node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »

sinon-mongoose

sinon-mongoose NPM version Build Status Dependency Status Coverage percentage

Extend Sinon stubs for Mongoose methods to test chained methods easily

Installation

$ npm install sinon-mongoose

Usage

require('sinon');
require('sinon-mongoose');

With Promises

If you are using a version < 2 of sinon-mongoose we recommend you to use sinon-as-promised to have resolves and rejects methods on stubs.

If you want to test this

MongooseModel.find()
  .limit(10)
  .sort('-date')
  .exec()
  .then(function(result) {
    console.log(result);
  });

Just mock and expects as usual and use chain to expects the chained methods. Finally call resolves or rejects (remember to require sinon-as-promised).

sinon.mock(MongooseModel)
  .expects('find')
  .chain('limit').withArgs(10)
  .chain('sort').withArgs('-date')
  .chain('exec')
  .resolves('SOME_VALUE');

See complete example

With callbacks (no Promises)

If you want to test this

MongooseModel.find()
  .limit(10)
  .sort('-date')
  .exec(function(err, result) {
    console.log(result);
  });

Just mock and expects as usually and use chain to expects the chained methods. Finally yields as always.

sinon.mock(MongooseModel)
  .expects('find')
  .chain('limit').withArgs(10)
  .chain('sort').withArgs('-date')
  .chain('exec')
  .yields(null, 'SOME_VALUE');

See complete example

Contributors

@jniemin

License

MIT © Gonzalo Aguirre