node.js - 如何断言函数被调用?

标签 node.js coffeescript mocha.js

我有一个山羊类(class):

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

  approach: -> 
    if @isCranky
      @headbutt()

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

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

最佳答案

怎么样?

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

    goat.approach()

    assert headbuttCalled

如果您发现自己多次重复这种测试函数是否被调用的模式,您可能需要使用类似 SinonJS 的内容。 ,它提供了一个“ spy ”结构:

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

goat.approach()

assert headbutt.called

关于node.js - 如何断言函数被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449453/

相关文章:

javascript - Zepto 中的绑定(bind)事件

node.js - Mocha 使用 Knex 测试 PostgreSQL 时出现 MigrationLocked 错误

javascript - "Parse Error: Header overflow"Node.js GET 请求期间

node.js - Redis/Node等待key存在

javascript - Sails.js - 文件上传

javascript - jQuery 加载后不运行 "if"

javascript - JQuery 附加不加载切换按钮的 css

ruby-on-rails - 如何使用 coffeescript 获取当前年份

node.js - 当我在项目中运行 Mocha 测试时,测试后无法终止

node.js - 不同的 NODE_ENV 用于不同的测试