我有一个大型CSV文件,其中包含复杂计算的输入和预期输出。我想用这个文件作为我用Node编写的计算器测试的基础。但是,似乎像Mocha和Vows这样的框架希望在读取和解析CSV文件后同步输出测试,而不是异步输出。
我可以通过将CSV转换为JSON并将其包含在我的测试文件中来解决这个问题,但我宁愿按原样使用权威的CSV文件,无论如何我只是好奇如何处理这种情况。感谢。
现在的基本方法(使用csvtojson
):
const cases = [];
csv()
.fromFile('../testdata/test.csv')
.on('json', (rowObj) => {
// convert columns to inputs and expected
cases.push(inputs: inputs, expected: expected);
})
.on('end', () => {
describe('Test cases', function() {
cases.forEach((test) => {
it(`${dynamicCaseName}`, () => {
// do our calculation
assert.equals(ours, test.theirs);
});
});
});
});
答案 0 :(得分:1)
你可以完全分开测试和加载的逻辑,将加载器包装在一个阻止测试的promise中,直到填充数组(如果使用node8,则使用async / await非常简单,否则只是Promise.each结果
如果你真的不想这样做,你可以宣传你的测试框架