2017-08-25 47 views
1

我有一个很大的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); 
       }); 
       }); 
      }); 
     }); 

回答

1

你可以只单独测试的逻辑和完全加载,包裹装载机在该块试验阵列填充,直到一个承诺(非常简单的用异步/等待,如果你正在使用node8,否则只是Promise.each结果。

如果你真的不想要做的,你可以Promisify测试框架

+1

圣保罗,这个问题已被标记为重复然而,如果你 看看它应该重复的问题,我认为你的答案好多了。也许你可以在那里添加你的答案,这有利于那些想要解决这个问题的人? – ed94133

+0

当然我也会在那里添加它 –