2017-11-03 7 views
2

Mongoose presaveフックで実行されるいくつかのドキュメント変換をテストしたいと思います。簡単な例:Mongooseドキュメント:テストのために手動でフックを実行

mySchema.pre('save', function(callback) { 
    this.property = this.property + '_modified'; 
    callback(); 
}); 

テスト:

var testDoc = new MyDocument({ property: 'foo' }); 
// TODO -- how to execute the hook? 
expect(testDoc.property).to.eql('foo_modified'); 

どのように私は手動でこのフックを実行することができますか?

答えて

0

さて、ここで最後に行ったことがあります。私たちは、ノーオペレーションの実装に$__save機能を置き換える:

// overwrite the $__save with a no op. function, 
// so that mongoose does not try to write to the database 
testDoc.$__save = function(options, callback) { 
    callback(null, this); 
}; 

これは、データベースを打つ防ぎますが、preフックは明らかにまだ呼び出されます。

testDoc.save(function(err, doc) { 
    expect(doc.property).to.eql('foo_modified'); 
    done(); 
}); 

ミッションが達成されました。

関連する問題