同步运行mocha测试

时间:2014-08-05 11:39:41

标签: node.js mocha

我有以下设置来运行'它'测试:

X is environment variable
if( X == "all" || X == "some value" )
   read directory and run test using it() with callbacks

if( X == "all" || X  == "some other value")
   read directory and run some it() tests with callback

我面临的问题是,当我给出一些价值"或者"其他一些值",所有it()测试运行得很好。但是当环境变量是" all"时,在运行第一个it()测试时,第二个if语句的目录内容正在出现。我正在使用fs.readdirSync(dir)来读取内容,我知道mochatest以异步方式运行它们,因此,第二个目录的内容出现在第一个测试中。是否有可能阻止第二个if语句的执行,直到第一个if()中的所有it()测试成功完成?或任何使其同步运行的替代方案。

2 个答案:

答案 0 :(得分:3)

在Mocha中,it()测试可能会阻止,直到您说它已完成。只需将“完成”回调传递给测试函数,如下所示:

it( "running test", function( done ) {
  //do stuff, even async
  otherMethod( function(err, result ){
    //check err and result
    done();
  } );
} );

Mocha也将在it()块内连续运行describe()测试。

答案 1 :(得分:1)

最好的方法是使用mocha-testdata异步npm模块,并传递一个文件数组,修复上述所有问题,所有测试用例运行正常,没有任何问题: 像

这样的东西
testData = require('mocha-testdata');
testData.async("array of files").test('#testing' , function(done, file) {
});

另外,使用mocha suite()代替it(),describe()调用。

suite('test:', function() {
testData.async("files array").test('#testing' , function(done, file) {
    // Code that works on the list of files
    });
});