Node.js 填充调用后的模拟猫鼬对象
我试图模拟一个填充调用,我想模拟返回mongoose对象,而不是普通的JS对象Node.js 填充调用后的模拟猫鼬对象,node.js,mongodb,mongoose,mocking,sinon,Node.js,Mongodb,Mongoose,Mocking,Sinon,我试图模拟一个填充调用,我想模拟返回mongoose对象,而不是普通的JS对象 sandbox.mock(BookModel) .expects('populate') .yields(null, [ new BookModel({ _id: mongoose.Types.ObjectId(), name: 'Mock Book', authorIds: [{ name: 'Foo', }] }) ]);
sandbox.mock(BookModel)
.expects('populate')
.yields(null, [
new BookModel({
_id: mongoose.Types.ObjectId(),
name: 'Mock Book',
authorIds: [{
name: 'Foo',
}]
})
]);
对于模式:
var BookSchema = new Schema({
name: { type: String, required: true, unique: true },
authorIds: [{type: Schema.Types.ObjectId, ref: 'Author'}],
});
var AuthorSchema = new Schema({
name: { type: String, required: true, unique: true },
});
但是,mongoose阻止我的测试创建具有模拟填充作者的模拟对象,因为mongoose可能正在检查authorIds数组是否是对象ID数组
是否有人使用sinon来模拟这样的填充字段?一种方法是在创建mongoose对象后在数组中插入一些内容。数组的直接赋值也不起作用,所以您需要对多个项进行循环
var book = new BookModel({
_id: mongoose.Types.ObjectId(),
name: 'Mock Book',
authorIds: []
});
book.authorIds[0] = {
name: 'Foo'
};
sandbox.mock(BookModel)
.expects('populate')
.yields(null, [book]);