[英]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.