【问题标题】:Backbone JS / Jasmine / Sinon : test if model has changed after eventBackbone JS / Jasmine / Sinon:测试事件后模型是否发生了变化
【发布时间】:2012-04-25 18:17:06
【问题描述】:

如何测试主干视图是否触发了事件,然后模型已更改?

【问题讨论】:

    标签: backbone.js jasmine sinon jasmine-jquery


    【解决方案1】:

    如果您的视图自己生成el,您可以通过视图的$el 使其轻松触发事件。

    
    describe("my test", function(){
    
      var MyModel = Backbone.Model.extend({});
    
      var MyView = Backbone.View.extend({
        events: {
          "click a": "aClicked"
        },
    
        aClicked: function(e){
          e.preventDefault();
          this.model.set({foo: "bar"});
        },
    
        render: function(){
          this.$el.html("<a href='#foo' id='fooLink'>foo</a>");
        }
      });
    
      var myModel;
    
      beforeEach(function(){
        myModel = new MyModel();
        var myView = new MyView({
          model: myModel
        });
    
        myView.render();
    
        // this will "click" the link
        myView.$("#fooLink").trigger("click");
      })
    
      it("should do that stuff", function(){
        expect(myModel.get("foo")).toBe("bar");
      });
    
    });
    

    【讨论】:

    • 太棒了!但是我怎样才能发现模型已经设置好呢?
    • 我写的测试表明......或者我不明白这个问题
    • 触发事件但不检查模型是否被调用
    • @chchrist foo 的值是bar 意味着设置已经完成。你可以也可以spyOn你的模型setcallThrough期待间谍已经被调用。
    • 啊,这就是我的意思,我需要确保 foo 是 bar
    猜你喜欢
    • 1970-01-01
    • 2016-04-28
    • 2015-02-15
    • 1970-01-01
    • 2017-10-16
    • 2012-06-07
    • 1970-01-01
    • 2013-03-12
    • 2014-01-29
    相关资源
    最近更新 更多