我有以下设置来运行'它'测试:
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()测试成功完成?或任何使其同步运行的替代方案。
答案 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
});
});