Joe*_*erg 3 testing backbone.js jasmine
我试图测试当我的模型触发事件时调用视图方法.但这不起作用 - 我已经没想到为什么会这样.这是不起作用的代码:
视图:
class View extends Backbone.View
initialize: ->
@.listenTo @model, 'request', @disableForm, @
disableForm: ->
console.log 'disableForm'
Run Code Online (Sandbox Code Playgroud)
茉莉花测试:
describe "AJAX events", ->
it "when starting an AJAX request, disable the form", ->
model = new Backbone.Model()
view = new Backbone.View( { model: model })
view.render()
spyOn(view, 'disableForm')
view.delegateEvents()
model.trigger 'request'
expect(view.disableForm).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)
此代码在浏览器中正常工作.
另外 - 当我运行测试时,console.log会打印'disableForm' - 所以模型事件触发了对disableForm的调用,但是我的间谍没有选择它(我的期望失败).我已经尝试将它放入waitsFor方法,但他也没有什么区别.
我出错的任何想法?
问题是,spyOn用函数替换disableForm视图中的spy函数.但此时模型已绑定到原始函数,因此替换视图中的函数对绑定到事件侦听器的函数没有影响.当您在模型上触发事件时,将调用原始函数而不是间谍.