тестирование событий представления backbone.js с помощью jasmine

Я пытаюсь реализовать тесты представления для реализации Coffeescript вездесущего примера backbone.js 'todo' (см. github.com/rsim/backbone_coffeescript_demo.)

Мои jasmine-тесты вышеприведенной демонстрации работают довольно хорошо, за исключением событий представления. Я предполагаю, что я застрял на одном или обоих следующих факторах i) я не понимаю привязки событий в коде представления, ii) я не понимаю, как правильно настроить Jasmine-тест событий кода представления.

Вот пример события 'edit'...

class TodoApp.TodoView extends Backbone.View
  tagName: "li"
  template: TodoApp.template '#item-template'
  events:
    "dblclick div.todo-content" : "edit"
     ...

  initialize: ->
    _.bindAll this, 'render', 'close'
    @model.bind 'change', @render
    @model.bind 'destroy', => @remove()

  render: ->
    $(@el).html @template @model.toJSON()
    @setContent()
    this

  edit: ->
    $(@el).addClass "editing"
    @input.focus()
  ...

...теперь вот тест на получение фокуса при двойном клике:

    describe "edit state", ->
      li = null

    beforeEach ->
       setFixtures('<ul id="todo-list"></ul>')
       model = new Backbone.Model id: 1, content: todoValue, done: false
       view = new TodoApp.TodoView model: model, template: readFixtures("_item_template.html")
       $("ul#todo-list").append(view.render().el)
           li = $('ul#todo-list li:first')
       target = li.find('div.todo-content')
       expect(target).toExist()
               target.trigger('dblclick') # here's the event!

    it "input takes focus", ->
       expect(li.find('.todo-input').is(':focus')).toBe(true)

Ожидания ни по i) шпиону, ни по ii) фокусу не оправдались.

Есть ли особенности тестирования кода событий backbone.js, о которых я должен знать в Jasmine?

8
задан Lille 29 September 2011 в 11:19
поделиться