在 MochaJS 中:如何按顺序 运行 进行异步测试?
In MochaJS: How to run asynchronous tests sequentially?
我正在使用 MochaJS 框架对 NodeJS 代码进行单元测试。
测试看起来像这样:
import 'mocha';
import { assert } from 'chai';
import { describe } from 'mocha';
describe('Test Suite', () => {
function execute(testData: string) {
it('Individual Test', async function() {
// await some asynchronous call using testData
// do some asserts
});
}
const testData: string[] = ["test 1", "test 2", "test 3"];
for (const data: string of testData) {
execute(data);
}
});
事实证明,多个测试(名为 'Individual Test')将 运行 并行。有没有办法等待每个测试,以便在下一个测试开始之前完成?我不想为每个 testData
项目声明单独的测试,因为那会是很多 copy/paste.
确保你没有使用 mocha 的 --parallel 标志。
你有两个选择。要么在 Individual Test 的 async 函数中使用 awaits。
或者您可以使用 delete "async" 并使用 done() 进行异步测试。当测试应该结束时调用 done()。如果调用时出现错误,测试将失败。确保只调用 done() 一次。
it('Individual Test', function(done) {
aPromise().then(v => {
done();
}).catch(done);
});
我正在使用 MochaJS 框架对 NodeJS 代码进行单元测试。
测试看起来像这样:
import 'mocha';
import { assert } from 'chai';
import { describe } from 'mocha';
describe('Test Suite', () => {
function execute(testData: string) {
it('Individual Test', async function() {
// await some asynchronous call using testData
// do some asserts
});
}
const testData: string[] = ["test 1", "test 2", "test 3"];
for (const data: string of testData) {
execute(data);
}
});
事实证明,多个测试(名为 'Individual Test')将 运行 并行。有没有办法等待每个测试,以便在下一个测试开始之前完成?我不想为每个 testData
项目声明单独的测试,因为那会是很多 copy/paste.
确保你没有使用 mocha 的 --parallel 标志。
你有两个选择。要么在 Individual Test 的 async 函数中使用 awaits。
或者您可以使用 delete "async" 并使用 done() 进行异步测试。当测试应该结束时调用 done()。如果调用时出现错误,测试将失败。确保只调用 done() 一次。
it('Individual Test', function(done) {
aPromise().then(v => {
done();
}).catch(done);
});