Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Jasmine测试自定义事件(使用主干)_Javascript_Backbone.js_Jasmine - Fatal编程技术网

Javascript 如何使用Jasmine测试自定义事件(使用主干)

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

我有一个功能,下面是绑定到一个按钮点击。下面的代码是TriserView类的一部分

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