The .cursor() method on mongoose model methods returns a readable stream, not a promise. Given how stream-oriented node js, and how you can easilly .pipe your mongoose queries to your server response like so:
const Model = mongoose.model('model', mySchema);
// ...
Model.find().limit(10).cursor().pipe(res);
It would be nice to have a stub method that returned a readable stream like so
MyMock = sinon.stub(Model)
MyMock.expects('find')
.chain('limit').withArgs(10)
.chain('cursor')
.streams([1,2,3])
For now, the only way I can do this is to create a custom readable stream that the mock returns like so.
const Readable = require('stream').readable,
rs = new Readable({objectMode: true}),
array = [1,2,3];
array.forEach(x => rs.push(x));
rs.push(null);
MyMock.expects('find')
.chain('limit').withArgs(10)
.chain('cursor')
.returns(rs);
The .cursor() method on mongoose model methods returns a readable stream, not a promise. Given how stream-oriented node js, and how you can easilly .pipe your mongoose queries to your server response like so:
It would be nice to have a stub method that returned a readable stream like so
For now, the only way I can do this is to create a custom readable stream that the mock returns like so.