node.js - 在 MochaJS 中:如何按顺序运行异步测试?
问题描述
我正在使用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);
}
});
事实证明,多个测试(名为“个人测试”)将并行运行。有没有办法等待每个测试,以便在下一个测试开始之前完成?我不想为每个testData
项目声明单独的测试,因为这将是很多复制/粘贴。
解决方案
确保不使用 mocha 的 --parallel 标志。
你有两个选择。在个人测试的异步函数中使用等待。
或者您可以使用 delete "async" 并使用 done() 进行异步测试。当测试应该结束时调用 done()。如果您调用它时出错,则测试将失败。确保只调用一次 done()。
it('Individual Test', function(done) {
aPromise().then(v => {
done();
}).catch(done);
});
推荐阅读
- python - API 路由上的 Django Jwt 身份验证
- c# - 如何根据dataGridView中的另一列值自定义DataGridViewButton单元格
- r - 具有单独数据文件夹的 Rproj
- c++ - 提高 C++ 中 .txt 文件的安全性
- ti-basic - TI-BASIC while 循环仅在 TI-84+ CE 上运行一次,即使其条件已满足
- javascript - CSS不透明度延迟,不褪色
- ios - 查找表格视图中所有数字的平均值
- python - 安装uwsgi后,python还是会报错:No module named 'uwsgi'
- swift - 位置服务提示/授权未在 macos / swift 中激活
- php - 仅当标志为“是”时如何使表格行出现?