javascript - 动态异步 Mocha 测试

标签 javascript unit-testing testing mocha.js

我有一个 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/

相关文章:

javascript - dojox.form.Rating 未出现在发布数据中

javascript - 如何构建javascript数组?

Android Eclipse 插件 : Instrumentation Test Runner not specified

testing - 如何测试 TCP 服务器实现?

javascript - 根据值改变颜色

javascript - JavaScript .js 文件第 1 行输入错误的意外结束

PHPUnit 设置以使用 dataProvider 运行单个测试

ios - 在 Swift 中对私有(private)变量进行单元测试

javascript - 如何解决TypeError : environment. teardown is not a function

angularjs - 当我使用 browser().navigateTo() 时,我如何才能看到 karma 看到的内容