在节点和 coffeescript 中测试回调方法

Testing callback method in node and coffescript

我正在使用 mocha 在 node 和 coffeescript 中编写一个小程序进行测试,我对所有这些都是新手。我正在使用一种方法来订阅 RabbitMQ 队列。当有消息时,回调会给我一个 json 对象。我还将队列本身发送到回调方法 handleMessage 以便能够使用 queue.shift.

handleMessage: (queue) -> (jsonObject) ->
    if (jsonObject.MyProperty == true)
        #do something
        queue.shift()

queue.subscribe({ack: true, prefetchCount: 1}, handleMessage(queue))

我现在想为 handleMessage 函数编写单元测试。首先我想知道 queue.shift 是否被调用。如何使用两个参数队列和 jsonOject?

从单元测试中调用 handleMessage

我关于如何从测试调用回调方法的问题的答案是在彼此之后使用两个括号

handleMessage(queue)(myJSonObject)

但我还需要更多的台词。这是我的测试结果。 (我也把处理放在另一个文件里了。)

myHandler = require '../lib/myhandler'
chai = require 'chai'
expect = chai.expect
should = chai.should()
chai.use(require 'sinon-chai')
{ assert, spy, match, mock, stub } = require 'sinon'

describe 'myHandler.handleMessage', ->
    it 'should shift message', ->
        handler = new myHandler
        myJSonObject = {MyProperty: 'foo'}
        queue = { shift: stub().returns 0 }

        handler.handleMessage(queue)(myJSonObject)
        queue.shift.should.have.been.called