我希望能够在特定环境中运行某些挂钩。例如,我有post.save
进行图像处理,但我不需要在测试期间运行这个钩子。一种解决方案就是检查钩子本身,如下:
FooSchema.post('save', function processImages() {
if (process.env.NODE_TESTING) return;
// do image processing
});
但我宁愿不直接考虑钩子本身的状态。另一个更好的方法是包装钩子并引入另一个接受环境列表的参数,这样钩子就会被定义为:
FooSchema.post('save', function processImages() {
// do image processing
}, { test: false, prod: true });
这种方法并不理想,因为我不想做任何包装。所以,我想听听其他人是否已经解决了这个具体需求,如果是,那么采取了什么方法。谢谢!
答案 0 :(得分:1)
你可以自己包装钩子安装:
if (!process.env.NODE_TESTING) {
FooSchema.post('save', function processImages() {
// do image processing
});
}
这样,它就永远不会安装在测试中。