假设我们有一个简单的Backbone View,例如:
class MyView extends Backbone.View
events:
'click .save': 'onSave'
onSave: (event) ->
event.preventDefault()
# do something interesting
我想测试当我使用
event.preventDefault()
类在元素上click
时调用.save
的情况。我可以测试回调函数的实现,就像这样(Mocha + Sinon.js):
it 'prevents default submission', ->
myView.onSave()
myView.args[0][0].preventDefault.called.should.be.true
我认为这行不通,但这只是为了理解这个想法。编写正确的代码,这行得通。我的问题是这样,我在测试实现而不是功能。
所以,我的问题确实是:我如何验证,假设要触发
click
元素上的.save
事件?it 'prevents default submission', ->
myView.$('.save').click()
# assertion here ??
一如既往的感谢:)
最佳答案
尝试在视图的$el
上添加侦听器,然后在click
上触发.save
,然后确认事件未冒泡到视图的元素。
var view = new MyView();
var called = false;
function callback() { called = true; }
view.render();
// Attach a listener on the view's element
view.$el.on('click', callback);
// Test
view.$('.save').trigger('click');
// Verify
expect(called).toBeFalsy();