Backbone JS / Jasmine / Sinon:测试模型在事件发生后是否发生了变化

时间:2012-04-13 11:23:07

标签: backbone.js jasmine sinon jasmine-jquery

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

1 个答案:

答案 0 :(得分:3)

如果您的视图正在生成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");
  });

});