2

私はヤギクラスを持っています:

class Goat
  constructor: (@headbutt) -> 
    @isCranky = true

  approach: -> 
    if @isCranky
      @headbutt()

isCranky が true で approach が呼び出された場合に headbutt() が呼び出されたことをアサートする Mocha テストを書きたいと思います。

これについて私が見つけることができる唯一の説明は、Ruby にあります。翻訳しようとしましたが、失敗しました。正しい関数が呼び出されたと断言するにはどうすればよいですか? ハックな方法で解決できると思いますが、正しい方法で学びたいと思います。提案?

4

1 に答える 1

2

どうですか?

describe 'Goat', ->
  it 'should call headbutt when approached', ->
    headbuttCalled = no
    headbutt = -> headbuttCalled = true
    goat = new Goat headbutt

    goat.approach()

    assert headbuttCalled

関数が呼び出されたかどうかをテストするこのパターンを何度も繰り返していることに気付いた場合は、「スパイ」構造を提供するSinonJSのようなものを使用することをお勧めします。

headbutt = sinon.spy()
goat = new Goat headbutt

goat.approach()

assert headbutt.called
于 2013-01-22T00:48:22.873 に答える