繁体   English   中英

Mocha与done()回调并行运行异步测试

[英]Mocha run async tests in parallel with done() callback

我正在使用Mocha运行一些异步测试,但是在完成之前的测试之前,无法执行某些将来的测试。 为此,我可以简单地使用done()回调来同步运行它们:

describe('first operations', function() {
    it('should do something', function(done) {
        longOperation(function(err) {
            done();
        });
    });
    it('should do something', function(done) {
        longOperation(function(err) {
            done();
        });
    });
});

describe('second operations', function() {
    it('should do something', function(done) {
        longOperation(function(err) {
            done();
        });
    });
    it('should do something', function(done) {
        longOperation(function(err) {
            done();
        });
    });
});

但是这样做会减慢整个操作的速度,因为我一直在同步运行每个it()块。 我想异步运行内部测试,每个测试都同步描述块,但是done()回调似乎没有这种方式(至少使用async )。

我是在做错什么,还是根本不支持? 如果不是,是否有办法可以解决这个问题以实现我的目标?

describe('first operations', function(done) {
    async.parallel([
        function(callback) {
            it('should do something', function() {
                longOperation(function(err) {
                    callback();
                });
            });
        },
        function(callback) {
            it('should do something', function() {
                longOperation(function(err) {
                    callback();
                });
            });
        }
    ], function(err) {
        done();
    });
});

describe('second operations', function(done) {
    async.parallel([
        function(callback) {
            it('should do something', function() {
                longOperation(function(err) {
                    callback();
                });
            });
        },
        function(callback) {
            it('should do something', function() {
                longOperation(function(err) {
                    callback();
                });
            });
        }
    ], function(err) {
        done();
    });
});

似乎已经创建了mocha-parallel-tests来满足这一需求。 这是项目站点的描述:

通常,用mocha编写的测试是按顺序运行的。 发生这种情况是因为每个测试套件都不应该依赖另一个。 但是,如果您运行的测试花费大量时间(例如,使用Selenium Webdriver进行的测试),那么等待这么长时间是不可能的。

我相信这将并行运行所有测试。 要限制describe块按顺序运行,可以将它们放在单独的文件中,然后分别在这些文件上运行mocha-parallel-tests

context.describe()似乎不是Runnable的实例。 另一方面, context.it()似乎正在创建Runnable的实例。 看起来只有Runnable实例才收到回调

因此,不,您似乎无法在异步运行封闭的it()块时连续运行describe()块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM