Javascript 如何使用Jasmine测试自定义事件(使用主干)
我有一个功能,下面是绑定到一个按钮点击。下面的代码是TriserView类的一部分Javascript 如何使用Jasmine测试自定义事件(使用主干),javascript,backbone.js,jasmine,Javascript,Backbone.js,Jasmine,我有一个功能,下面是绑定到一个按钮点击。下面的代码是TriserView类的一部分 addCard: function() { if(!this.model.get("loggedIn")){ Backbone.pubSub.trigger("Signup"); return; } this.showAddCardDialog(); } 这是我的测试方法 it("Should trigger signup event when clicke
addCard: function() {
if(!this.model.get("loggedIn")){
Backbone.pubSub.trigger("Signup");
return;
}
this.showAddCardDialog();
}
这是我的测试方法
it("Should trigger signup event when clicked and not logged in", function(){
Backbone.pubSub = _.extend({}, Backbone.Events);
signupCallback = jasmine.createSpy("Signup");
//Backbone.pubSub.on("Signup", signupCallback);
teaserView = new TeaserView({
el: "#teaser",
model: this.model //was created in setup call
});
$("#addCard").trigger("click");
expect(signupCallback).toHaveBeenCalled();
});
但是,我检查Backbone.pubSub自定义事件是否被调用的测试失败。如何正确测试侦听此事件?您给定的测试代码实际上没有侦听注册事件
signupCallback = jasmine.createSpy("Signup");
这不是你想要的
signupCallback = jasmine.createSpy();
Backbone.pubSub.on('Signup', signupCallback);
你应该得到你想要的
signupCallback = jasmine.createSpy();
Backbone.pubSub.on('Signup', signupCallback);
在这段新代码中,signupCallback被指定为一个事件回调,因此触发事件应该调用spy回调。为什么会将其注释掉
Backbone.pubSub.on(“Signup”,signupCallback)代码>?谢谢,我一直在寻找这个,在你的问题中找到了答案。就像克里斯说的,为什么会有评论?如果没有对它进行注释,它可以正常工作,因为没有其他方法可以调用signupCallback