我有一个Goat课程:
class Goat
constructor: (@headbutt) ->
@isCranky = true
approach: ->
if @isCranky
@headbutt()
我想编写一个Mocha测试来声明如果isCranky为true并且调用了方法,则调用headbutt()。
我能找到的唯一解释是Ruby。尝试翻译它,但失败了。我如何断言调用了正确的函数?我想我可以用hacky的方式解决它,但宁愿学习正确的方法。建议?
答案 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