I want to create a stub for the Mongoose save
method in a particular model, so that any instance of my model I create will call the stub instead of the normal Mongoose save
method. My understanding is that the only way to do this is to stub the entire model like this:
var stub = sinon.stub(myModel.prototype);
Unfortunately, this line of code causes my tests to throw the following error:
TypeError: Cannot read property 'states' of undefined
Does anyone know what is going wrong here?
There are two ways to accomplish this. The first is
var mongoose = require('mongoose');
var myStub = sinon.stub(mongoose.Model, METHODNAME);
If you console log mongoose.Model you will see the methods available to the model (notably this does not include lte option).
The other (model specific) way is
var myStub = sinon.stub(YOURMODEL.prototype.base.Model, 'METHODNAME');
Again, the same methods are available to stub.
EDIT: Some methods such as save are stubbed as follows:
var myStub = sinon.stub(mongoose.Model.prototype, METHODNAME);
var myStub = sinon.stub(YOURMODEL.prototype, METHODNAME);