我不知道这个标题是不是很正确,因为我被困住了(在我的头上)。。。
作为自动化测试的一部分,我试图从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
解决方案是使用'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...
//
})