【发布时间】:2011-09-28 23:14:42
【问题描述】:
我正在尝试为普遍存在的主干.js 'todo' 示例的 Coffeescript 实现实现视图测试(请参阅 github.com/rsim/backbone_coffeescript_demo。)
我对上述演示的 jasmine 测试运行良好,但视图事件除外。我预计我会被以下一项或两项卡住 i) 我不了解视图代码中的事件绑定,ii) 我不了解如何正确设置视图代码事件的 Jasmine 测试。
以下是“编辑”事件的示例...
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) 焦点都没有得到满足。
在 Jasmine 中测试我应该注意的backbone.js 事件代码有什么特殊性吗?
【问题讨论】:
-
我遇到了同样的问题。您找到解决方案了吗?
-
也有类似的问题,还是没有思路?
标签: backbone.js jasmine jasmine-jquery