Тестирование триггерного метода Backbone Model с помощью Jasmine - PullRequest
3 голосов
/ 12 января 2012

Я получил странную ошибку при тестировании триггерного метода моей модели 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 Ответ

4 голосов
/ 17 февраля 2014

Я обнаружил, что часто лучший способ проверить запуск события - это зарегистрировать шпиона в качестве одного из слушателей события, а не шпионить непосредственно за методом запуска.Это будет выглядеть примерно так:

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