0

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

何か案は?:)

4

2 に答える 2

0

ビュークラスでモックしますか?

#arrange
view = new View
view.myCallback = sinon.spy()

#act
view.myMethod()

#assert
view.myCallback.called.should.be.true

コールバックが遅延doneハンドラーとして呼び出されたか、またはその他の方法で呼び出されたかは、実装の詳細です。メソッドが呼び出されたことだけが重要です (選択した場合は、正しい引数を使用して)。

于 2013-01-23T17:47:57.800 に答える