Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试节点数据分块功能_Javascript_Node.js_Testing_Tdd_Node.js Tape - Fatal编程技术网

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

Javascript 如何测试节点数据分块功能,javascript,node.js,testing,tdd,node.js-tape,Javascript,Node.js,Testing,Tdd,Node.js Tape,我正在做一个使用node的项目,我们正在努力实现100%的功能覆盖率。这是我们唯一没有测试的函数,它在另一个函数中 var userInput = ""; req.on("data", function(data){ userInput += data; }); 如何测试这个函数?我们尝试从另一个文件导出函数,但没有成功 我应该提到,我们使用磁带作为测试模块 您需要在req上触发此“数据”事件。以便调用此回调 例如,假设您在测试中有req,您可以这样做(这是摩卡咖

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

 var userInput = "";
    req.on("data", function(data){
      userInput += data;
    });
如何测试这个函数?我们尝试从另一个文件导出函数,但没有成功

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

您需要在req上触发此“数据”事件。以便调用此回调

例如,假设您在测试中有
req
,您可以这样做(这是摩卡咖啡):

req.emit('data',{sampleData:'ErrorOrRightSampleDatahere'})
应该这样做。 当实例化
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()

我应该提到我用磁带来测试。你认为它会以类似的方式工作吗?是的,我认为会。你能测试一下吗:
req.emit('data','sampleData');log(用户输入)
并查看它是否打印“sampleData”-否则请尝试@eljefedelrodeljefe的建议
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()