我有一个 service
类,它扩展了 50 个其他“服务”。虽然每个服务都有自己的测试,但我想为所有服务共享功能编写一个测试套件(我有一个方法 thing
,每个服务都必须实现)。
为了测试thing
,每个服务还有一个函数thingConfig
,它返回一组thing
可以运行的配置。我想执行以下操作:
describe('service', () => {
let configs;
before(async () => configs = await service.thingConfig())
configs.forEach(config => {
it(config.name + ' should run thing', () => {
thing = await service.thing(config);
expect(thing).to....
});
});
})
是否可以根据异步数据进行动态测试(forEach)?
最佳答案
为了让它工作,你必须制作一些虚拟的 it case。
看下面的例子:
describe('Dummy spec', () => {
before(async () => {
const configs = await service.thingConfig();
describe('Generated spec', () => {
configs.forEach((config) => {
it(`Test for config: ${config}`, async () => {
const thing = await service.thing(config);
expect(thing).to....
});
});
});
});
it('Dummy test case, so before is executed', () => assert.strictEqual(1, 1));
});
假设一切顺利,您应该会看到以下形式的结果:
Dummy spec
√ Dummy test case, so before is executed
Generated spec
√ Test for config: test1
√ Test for config: test2
√ Test for config: test3
√ Test for config: test4
5 passing (3s)
关于javascript - 动态异步 Mocha 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56671879/