假设我已经绑定(bind)了一个操作 Hook
用于测试目的,如下所示:
it('verification link confirms mail',function(done){
var client = app.models.client;
client.observe('after save', function(ctx, next) {
if (!ctx.instance.verificationToken){
next();
return;
}
var link = '/api/clients/confirm?uid=' + ctx.instance.id + '&redirect=/verified&token=' + ctx.instance.verificationToken;
json('get', link)
.send()
.expect(200, function(){
client.findById(ctx.instance.id, function(err, inst){
assert(inst.emailVerified === true);
done();
});
});
next();
});
client.create({username:'test',email : 'a@b.com', password : 'test'}, function(err){
if(err) {
assert.fail('could not create client instance','',err);
}
});
});
问题是创建 client
实例的所有后续测试都有此操作 Hook 。有办法解除绑定(bind)吗?
最佳答案
我不认为环回提供了一种安全地取消观察操作钩子(Hook)的方法。我认为他们使用 Object.observe
方法,该方法在某些 javaScript 实现中已经过时了。我建议你尝试这样的事情:
client.unobserve('after save', function (ctx, next) {
//do something after the change is un-observed in the object
});
我希望您发现这很有用。
您可以阅读更详细的内容here 。 这是一个过时的功能,所以要小心。
关于javascript - 是否可以删除操作 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36557234/