2

我有一个山羊课:

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

  approach: -> 
    if @isCranky
      @headbutt()

我想编写一个 Mocha 测试来断言如果 isCranky 为真并且调用了方法,则调用了 headbutt()。

我能找到的唯一解释是 Ruby。尝试翻译它,但失败了。如何断言调用了正确的函数?我想我可以用一种 hacky 的方式解决它,但宁愿学习正确的方法。建议?

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 回答