使用 Jasmine 测试 Backbone 模型的触发方法

标签 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");
 })

})

我得到的错误是“预期的 spy 触发器已通过 ['notesFetchedEvent'] 调用,但被调用为......乱码......”。有谁知道如何解决这一问题?谢谢。

最佳答案

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

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();
  });
});

关于使用 Jasmine 测试 Backbone 模型的触发方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826834/

相关文章:

java - 编译错误,从命令行在 maven 项目中运行 Selenium 测试时

wordpress - 沙箱和 Wordpress、Joomla 或 Drupal 站点?

perl - 测试使用 Dist::Zilla 的 XS 模块

java - 在测试应用程序或网站时,本地化和国际化测试是否重要?

angular - 测试组件元数据

javascript - 使用 Chutzpah 在 Typescript 中运行 Jasmine 测试

javascript - 在 Webstorm 11 中使用 jasmine 运行/调试 node.js 测试用例

javascript - 今天(2011 年)我应该使用哪个 JavaScript hashchange/history 库?

javascript - Backbone.js 中的嵌套模型,如何处理

javascript - backbone.js 事件和 el