使用Jasmine测试Backbone Model的触发器方法

时间:2012-01-11 21:22:49

标签: testing backbone.js jasmine

在测试Backbone模型的触发方法时,我遇到了一个奇怪的错误。以下是我的代码:

Category = Backbone.Model.extend({
   fetchNotes: function() {
     this.trigger("notesFetchedEvent");
   }
})

describe("Category", function() {

 it("should fetch notes", function() {
   var category = new Category;
   spyOn(category, "trigger");
   category.fetchNotes();
   expect(category.trigger).wasCalledWith("notesFetchedEvent");
 })

})

我得到的错误是“预期的间谍触发器已被['notesFetchedEvent']调用但被调用了...... jibberish ......”。有谁知道如何解决这一问题?感谢。

1 个答案:

答案 0 :(得分:4)

我发现测试事件触发的最佳方法通常是将间谍注册为事件中的一个侦听器,而不是直接监视触发器方法。这看起来像这样:

describe("Category", function() {
  it("should fetch notes", function() {
    var category = new Category();
    var spy = jasmine.createSpy('event');
    category.on('notesFetchedEvent', spy);
    category.fetchNotes();
    expect(spy).toHaveBeenCalled();
  });
});