我如何断言函数被调用?

时间:2013-01-22 00:08:29

标签: node.js coffeescript mocha

我有一个Goat课程:

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

  approach: -> 
    if @isCranky
      @headbutt()

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

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

1 个答案:

答案 0 :(得分: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