Я пытаюсь реализовать тесты представления для реализации Coffeescript в вездесущем примере 'todo' backbone.js (см. Github.com/rsim/backbone_coffeescript_demo.)
Мои тесты с жасмином из вышеприведенной демонстрации работают довольно хорошо, за исключением событий просмотра. Я ожидаю, что застрял в одном или обоих из следующих пунктов: i) Я не понимаю привязку события в коде представления, ii) Я не понимаю, как правильно настроить тест Жасмина для событий кода представления.
Вот пример события '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?