Mocha是否提供参数化测试“ @Theory”样式的选项?

时间:2018-10-19 01:29:13

标签: javascript testing mocha parameterized

JUnit和N / XUnit都使我们能够参数化仅根据输入值和预期结果而不同的测试。换句话说,我们可以静态定义测试数据集(输入+预期结果),并让一个测试执行并验证每个输入集的结果。我们可以使用至少两个实用程序在JS中进行相同的操作。

但是,对于Java和.Net,我们可以进一步推广测试,而不是测试特定的值,我们可以使用理论(“ @Theory”和“ []来描述生成输入数据和实时生成测试数据的规则。理论]”)。

JS中有什么实用程序可以在编写测试时实现这种抽象水平?

1 个答案:

答案 0 :(得分:1)

有点晚了,但是我想做类似的事情,只是通过创建一个具有输入/输出参数的数组并在循环中调用来解决。这只是一个基本示例,但我可能会继续努力一点,看看我能做些什么。

describe('Arrow', () => {
  const theories = [
    [undefined, "left-arrow", "<"],
    ["left", "left-arrow", "<"],
    ["right", "right-arrow", ">"]
  ];

  theories.forEach(([dir, className, arrow]) => {
    it(`should render the correct arrow given ${dir} direction`, () => {
      const wrapper = shallow(<Arrow dir={dir} onClick={jest.fn()} />);
      expect(wrapper.hasClass(className)).toEqual(true);
      expect(wrapper.text().toEqual(arrow);
    });
  });