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



我正在做一个使用node的项目,我们试图实现我们功能的100%覆盖率。这是我们唯一没有测试过的函数,而且它在另一个函数中。

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

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

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

您需要在请求时触发此"data"事件。这样这个回调就会被调用。

例如,假设您的测试中有req,您可以这样做(这是Mocha):

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

req.emit('data', {sampleData: 'wrongOrRightSampleDataHere'})应该这样做。当实例化httpreq对象时,请确保实例化了一个新的对象,没有其他测试接收到此事件。

要更完整…

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()

相关内容

  • 没有找到相关文章

最新更新