0
포스트 후크에 대한 테스트를 작성하려고합니다. user
이 저장되면 별도의 컬렉션에 몇 가지 추가 정보가 저장됩니다. 세부 정보가 두 번째 컬렉션에 저장되는지 여부를 확인하려고합니다. 후크가 비동기 적으로 실행되면서 확인할 수 없습니다.런타임시 미들웨어 후크를 제거하는 방법은 무엇입니까?
userSchema.post('save', function(user, next){
var filter = new filterModel({name: user.name});
filter.save().then(()=>next());
});
제 테스트에서는 첫 번째 후크를 실행하는 새 후크를 추가 할 생각이었습니다. 여기서는 첫 번째 훅이 filter
객체를 저장했는지 확인할 수 있습니다. 나는 모든 후속 시험에 적용 할 것, 테스트에 post
후크를 추가하면
describe('',()=>{
it('', (done)=>{
userSchema.post('save', function(u){
filterModel.findOne({...}).exec().then(()=>{
assert(....);
done();
});
})
new userModel({name:'sid'}).save();
})
});
문제
입니다.after
블록에서이 후크를 제거 할 수 있습니까? 약속을 반환
document#save
포스트 저장 후크에서 실행되는 코드를 어설 션해야합니다. 후크가 비동기이기 때문에 나는 then()에서 그것을 할 수 없다. – sidgate
당신의 질문에 슬픈 : _ 세부 사항이 두 번째 콜렉션에 저장되어 있는지 확인하고 싶다 ._. 'user.save()'가 실행되면, 모든 _hooks_가 완료 될 때 (동기 및 비동기). 즉,'then' 콜백을 사용하여 데이터가 별도의 컬렉션에 삽입되었는지 확인할 수 있습니다. – alexmac
후크가 비동기 적으로 실행되기 때문에 hook이'then' 콜백 이후에 실행될 수 있습니다. 그래서 나는저기서 그것을 확인할 수 없다. 한 가지 옵션은 setTimeout에서 확인하는 것이지만 올바른 옵션이 아닙니다 – sidgate