提问者:小点点

ReadStream管道完成后执行循环


我不知道这个标题是不是很正确,因为我被困住了(在我的头上)。。。

作为自动化测试的一部分,我试图从csv中提取这些头,以验证这些头。我使用csv-parse读取csv文件。

一旦我收集了头,我就做一个简单的断言来遍历和断言每一个。使用我在测试脚本中输入的字符串值。

然而,当前,FOR在csv读取和头收集之前正在执行。我不确定如何在执行循环之前等待这个过程完成。

null

const fs = require('fs');
const csv = require('csv-parser');
let headerArray = null;
const headerValues = values.split(',');
browser.pause(10000);
fs.createReadStream(""+global.downloadDir + "\\" + fs.readdirSync(global.downloadDir)[0])
  .pipe(csv())
  .on('headers', function (headers) {
    return headerArray = headers
  })
for(var i =0; i<headerValues.length; i++){
 assert.equal(headerValues[i], headerArray[i]);
}

null


共1个答案

匿名用户

解决方案是使用'headers'事件处理程序中的断言运行for循环,例如:

fs.createReadStream(""+global.downloadDir + "\\" + fs.readdirSync(global.downloadDir)[0])
  .pipe(csv())
  .on('headers', function (headers) {
    for(var i =0; i<headerValues.length; i++){
      assert.equal(headerValues[i], headers[i]);
    }
    //
    // finish writing the rest of your program here...
    //
  })

相关问题