我想 通过在我的测试中使用proxyquire来模拟 MongoDB 依赖项:
var proxyquire = require('proxyquire');
var controller = path.resolve('.path/to/controller/file.js');
在每个语句之前:
mocked_mongoose = {
isMocked: true,
model: function(name, schema, collection, skipInit) {
return {
find: function(conditions, projection, options, callback) {
console.log('callback find');
return callback();
},
save: function(options, fn) {
console.log('callback save');
return callback();
},
findOne: function(conditions, projection, options, callback) {
console.log('callback find one');
var model = mongoose.model(name);
var fakeModel = fakery.fake(model);
return callback(null, fakemodel);
}
}
}
};
proxyquire(controller, {
'mongoose': mocked_mongoose
});
当我去控制器并执行 console.log(mongoose.isMocked) 时,我得到了 undefined 并且如果我打印 mongoose.model.toString() 似乎 mongoose 方法没有被覆盖。
我跟进了这篇文章并尝试实现相同的逻辑,但我没有得到相同的结果。
任何帮助将不胜感激,谢谢!