2017-11-03 6 views
2

몽구스 presave 후크에서 실행되는 일부 문서 변환을 테스트하고 싶습니다. 간단한 예 :몽구스 문서 : 테스트를 위해 수동으로 후크 실행

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(); 
}); 

임무 완수.