Предлагает ли Mocha возможность параметризовать тесты в стиле "@Theory"? - PullRequest
0 голосов
/ 19 октября 2018

И JUnit, и N / XUnit позволяют нам параметризировать тесты, которые отличаются только входными значениями и ожидаемыми результатами.Другими словами, мы можем статически определить наборы тестовых данных (входные данные + ожидаемые результаты) и позволить одному отдельному тесту выполнить и проверить результаты для каждого из входных наборов.Мы можем сделать то же самое в JS, используя как минимум две утилиты.

Однако для Java и .Net мы можем обобщать тесты еще больше, и вместо тестирования на конкретные значения мы можем описать правила для генерации входных данных и генерациитестируйте данные на лету, используя теории («@Theory» и «[Theory]» соответственно).

Какая утилита в JS позволяет использовать этот уровень абстракции при написании тестов?

1 Ответ

0 голосов
/ 18 января 2019

Немного поздно, но я хотел сделать нечто подобное и просто решил, создав массив с параметрами ввода / вывода и вызвав его в цикле.Это просто базовый пример, но я мог бы продолжить над ним немного больше, чтобы посмотреть, что я могу заставить его сделать.

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);
    });
  });
...