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

发布于 2024-12-26 04:08:33 字数 510 浏览 0 评论 0原文

在测试 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' ] 调用,但使用...胡言乱语...调用”。有谁知道如何解决这个问题?谢谢。

I got a weird error when testing the trigger method of my Backbone model. Below is my code:

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

})

The error I got was "Expected spy trigger to have been called with [ 'notesFetchedEvent' ] but was called with ...jibberish...". Does anyone know how to fix this? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦途 2025-01-02 04:08:33

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

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

I've found that often the best way to test event triggering is to register a spy as one of the listeners on the event instead of spying on the trigger method directly. This would look something like this:

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();
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文