延迟dynamictesting创build

我有一个很大的CSV文件,其中包含input和复杂计算的预期输出。 我想用这个文件作为testing我的计算器写在Node中的基础。 但是,似乎像Mocha和Vows这样的框架期望在CSV文件被读取和parsing后同步输出testing,而不是asynchronous输出。

我可以通过将CSV转换为JSON并将其包含在我的testing文件中来解决此问题,但我宁愿使用权威性的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); }); }); }); }); 

你可以完全分离testing和加载的逻辑,将加载器封装在一个承诺,阻止testing,直到数组填充(如果你使用node8,非常简单的asynchronous/等待,否则只是Promise.each结果。

如果你真的不想这样做,你可以promisify你的testing框架