Backbone ビューの 1 つに、次の CoffeeScript コードがあります。
myMethod: ->
# some code here
$.when(
# ...
).done(
@myCallback
)
そして、完了ブロックで myCallback が呼び出されることをテストしたいと思います。
Mocha.js + Sinon.js でこれを行う方法がわかりません。jquery をスパイし、 when メソッドが呼び出されていることを確認できました。
spy = sinon.spy($, 'when')
@view.myMethod()
spy.called.should.be.true
spy.restore()
しかし、done ブロックで同じことを行うことはできません。なぜなら、それを正しく理解していれば、それは when メソッドによって返される遅延オブジェクトに関連しているからです。
私も次のようなことを試しました:
# NOT WORKING CODE
stub = sinon.stub($.Deferred(), 'done').returns
myCallback: sinon.stub()
@view.myMethod()
stub.called.should.be.true
stub.restore()
しかし、まだ得ています:
expected false to be true
何か案は?:)