测试node和coffescript中的回调方法

时间:2015-07-31 14:39:27

标签: node.js coffeescript mocha

我正在节点和coffeescript中编写一个小程序,使用mocha进行测试,我是所有新手。我正在使用一种方法来订阅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。如何使用两个参数queue和jsonOject在单元测试中调用handleMessage?

1 个答案:

答案 0 :(得分:0)

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

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