提问人:Michael Jonker 提问时间:10/22/2023 最后编辑:Michael Jonker 更新时间:10/22/2023 访问量:46
我可以使用动态导入将测试套件模块加载到 mocha 中吗?
Can I use dynamic imports to load test suite modules into mocha?
问:
我一直在使用以下结构使用 commonJs 构建我的测试;
// My main file
describe('unit tests', function(){
require('./unit/test.spec.js');
})
describe('functional tests', function(){
require('./function/test.spec.js');
})
//... and soforth ...
我的 test.spec.js 是沿着这些思路;
it('does something', function(){
assert.equal(1,1);
})
通过这种方式,我可以在单独的文件中构建大量测试,并且效果很好。
我正在尝试对 ESM 动态导入做同样的事情,就像这样;
describe('functional tests', async function(){
await import('./function/test.spec.js');
})
//... and soforth ...
然而,结果是现在.0 passing (0ms)
看起来要么是 Mocha 没有触发,要么是 ESM 没有运行导入的代码。也许有更好的方法?任何帮助都表示赞赏。describe
答:
0赞
Michael Jonker
10/22/2023
#1
我自己解决了这个问题;
简而言之,答案是否定的,动态导入在 Mocha 块中无法按预期运行。describe
但是,您可以使用顶级导入动态生成测试套件。(节点 >= v14.8.0,带 ESM 测试文件)
套件生成器文件因此成为;
export default function(){
it('does something', function(){
assert.equal(1,1);
})
}
和顶层主文件;
import suite from './unit/test.spec.js'; //top level import
describe('unit tests',suite);
现在一切都像以前使用 commonJs 一样运行。
评论