最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Does Mocha offer the option to parameterize tests "@Theory" style? - Stack Overflow

programmeradmin7浏览0评论

Both JUnit and N/XUnit enable us to parameterize tests which differ only by input values and expected results. In other words, we can statically define sets of test data (inputs + expected results) and let one single test execute and validate results for each of the input sets. We can do the same in JS using at least two utilities.

However, for Java and .Net we can generalize tests even more and instead of testing for specific values we can describe the rules for generating input data and generate test data on the fly, using theories ("@Theory" and "[Theory]" respectively).

What utility is there in JS that enables this level of abstraction in writing tests?

Both JUnit and N/XUnit enable us to parameterize tests which differ only by input values and expected results. In other words, we can statically define sets of test data (inputs + expected results) and let one single test execute and validate results for each of the input sets. We can do the same in JS using at least two utilities.

However, for Java and .Net we can generalize tests even more and instead of testing for specific values we can describe the rules for generating input data and generate test data on the fly, using theories ("@Theory" and "[Theory]" respectively).

What utility is there in JS that enables this level of abstraction in writing tests?

Share Improve this question asked Oct 19, 2018 at 1:29 krazyk4tladykrazyk4tlady 4291 gold badge6 silver badges15 bronze badges 1
  • 1 Use async.each in javascript for parameterized tests <caolan.github.io/async/docs.html#each> – Mridula Commented Nov 26, 2018 at 23:56
Add a ment  | 

1 Answer 1

Reset to default 11

I wanted to do something similar and just solved it by creating an array with the input/output parameters and calling that in a loop. This is just a basic example, but I might keep working on it a little more to see what I can make it do.

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);
    });
  });
发布评论

评论列表(0)

  1. 暂无评论