gpt4 book ai didi

node.js - 开场 Mocha 并行描述

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:01 24 4
gpt4 key购买 nike

我希望能够并行启动我在 Mocha 中的所有描述语句。谁能帮我弄清楚该怎么做?

最佳答案

您不能直接使用 mocha 执行此操作,因为它会创建一个 it() 回调列表并按顺序调用它们。 mocha-parallel-tests如果您愿意将您的描述移动到单独的 .js 文件中,可以这样做。为了说服自己,将它安装在某个地方并用一个简短的 --slow 调用它,这样它每次都会报告:

laptop:/tmp/delme$ npm install mocha-parallel-tests
laptop:/tmp/delme$ cd node_modules/mocha-parallel-tests
laptop:/tmp/delme/node_modules/mocha-parallel-tests$ ./bin/mocha-parallel-tests test/parallel/tests --timeout 10000 --slow 100

您会看到它在运行时间最长的时间内运行了三个(非常简单的)测试套件。

如果您的测试不依赖于早期测试的副作用,您可以使它们全部异步。一个简单的方法是在描述之前启动需要一段时间的东西,并使用普通的 mocha 工具对其进行评估。在这里,我创建了一堆需要一段时间才能解决的 promise ,然后再次迭代测试,在 .then() 函数中检查它们的结果:

var expect = require("chai").expect;

var SlowTests = [
{ name: "a" , time: 250 },
{ name: "b" , time: 500 },
{ name: "c" , time: 750 },
{ name: "d" , time:1000 },
{ name: "e" , time:1250 },
{ name: "f" , time:1500 }
];

SlowTests.forEach(function (test) {
test.promise = takeAWhile(test.time);
});

describe("SlowTests", function () {
// mocha defaults to 2s timeout. change to 5s with: this.timeout(5000);
SlowTests.forEach(function (test) {
it("should pass '" + test.name + "' in around "+ test.time +" mseconds.",
function (done) {
test.promise.then(function (res) {
expect(res).to.be.equal(test.time);
done();
}).catch(function (err) {
done(err);
});
});
});
});

function takeAWhile (time) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(time);
}, time);
});
}
(将其保存为 foo.js 并使用 mocha foo.js 调用。)

Meta 我不同意测试应该主要是同步的断言。编译指示之前和之后更容易,但很少有一次测试会使所有其余测试无效。所有令人沮丧的异步测试都会阻碍对网络任务的广泛测试。

关于node.js - 开场 Mocha 并行描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com