テストでこれを行うことにより、 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) を実行すると、未定義になり、mongoose.model.toString() を出力すると、mongoose メソッドがオーバーライドされていないように見えます。
この記事をフォローアップして、同じロジックを実装しようとしましたが、同じ結果が得られません。
どんな助けでも大歓迎です、ありがとう!