一尘不染

与Sinon一起使用猫鼬模型

node.js

我想为save特定模型中的Mongoose 方法创建一个存根,以便我创建的模型的任何实例都将调用该存根,而不是普通的Mongoose
save方法。我的理解是,执行此操作的唯一方法是像这样对整个模型进行存根:

var stub = sinon.stub(myModel.prototype);

不幸的是,这行代码使我的测试抛出以下错误:

TypeError: Cannot read property 'states' of undefined

有人知道这里出了什么问题吗?


阅读 263

收藏
2020-07-07

共1个答案

一尘不染

有两种方法可以完成此操作。首先是

var mongoose = require('mongoose');
var myStub = sinon.stub(mongoose.Model, METHODNAME);

如果您使用log mongoose.Model控制台,则会看到该模型可用的方法(特别是其中不包含lte选项)。

另一种(特定于模型的)方式是

var myStub = sinon.stub(YOURMODEL.prototype.base.Model, 'METHODNAME');

同样,存根可以使用相同的方法。

编辑:诸如保存的一些方法如下:

var myStub = sinon.stub(mongoose.Model.prototype, METHODNAME);
var myStub = sinon.stub(YOURMODEL.prototype, METHODNAME);
2020-07-07