如何测试节点数据分块功能

时间:2015-10-22 18:20:29

标签: javascript node.js testing tdd node.js-tape

我正在开发一个使用节点的项目,我们正努力实现100%的功能覆盖。这是我们没有测试过的唯一功能,它在另一个功能中。

 var userInput = "";
    req.on("data", function(data){
      userInput += data;
    });

你如何测试这个功能?我们尝试从另一个文件导出函数,但没有运气。

我应该提到我们正在使用磁带作为测试模块。

2 个答案:

答案 0 :(得分:0)

您需要在req上触发此“数据”事件。这样就可以调用这个回调。

例如,假设您的测试中有req,您可以执行类似的操作(这是Mocha):

req.trigger('data', 'sampleData');
expect(userInput).to.equal('sampleData');

答案 1 :(得分:0)

req.emit('data', {sampleData: 'wrongOrRightSampleDataHere'})应该这样做。 在实例化http或因此req对象时,请确保实例化一个新对象,否则其他任何测试都不会收到此事件。

更完整...

var assert = require('assert')
function test() {
    var hasBeenCalledAtLeastOnce = false
    var userInput = "";
    // req must be defined somewhere though
    req.on("data", function(data){
        userInput += data;

       if(hasBeenCalledAtLeastOnce) {
          assert.equal(userInput, "HelloWorld", "userInput is in fact 'HelloWorld'")
       }
       hasBeenCalledAtLeastOnce = true 
    });

    req.emit('data', "Hello")
    req.emit('data', "World")

}

test()