我有一个绑定按钮的功能。代码部分属于TeaserView类。
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自定义事件是否被调用的测试失败了。如何正确测试此事件的监听?
答案 0 :(得分:0)
您给定的测试代码实际上并没有收听注册事件。
signupCallback = jasmine.createSpy("Signup");
不是你想要的。
signupCallback = jasmine.createSpy();
Backbone.pubSub.on('Signup', signupCallback);
应该得到你想要的东西。
在这个新代码中,signupCallback被指定为事件回调,因此触发事件应该调用间谍回调。