Extend Sinon stubs for Mongoose methods to test chained methods easily
$ npm install sinon-mongooseIMPORTANT! As of version 2.2.0 we are supporting sinon >= 5. If you are using sinon < 5 you could have some problems due to some breaking changes in sinon 5.
require('sinon') require('sinon-mongoose')If you are using a version < 2 of
sinon-mongoosewe recommend you to use sinon-as-promised to haveresolvesandrejectsmethods 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
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
MIT © Gonzalo Aguirre