jest-theories

Run one test code with varying inputs to minimise on repition, and maximise on ease of test creation. More tests mean better coverage.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
jest-theories
2151.5.13 years ago6 years agoMinified + gzip package size for jest-theories in KB

Readme

jest-theories
Run one test code with varying inputs to minimise on repition, and maximise on ease of test creation. More tests mean better coverage.

Installation

npm install jest-theories

Example

``` import theoretically from 'jest-theories'; describe('NumberToLongString', () => {
const theories = [
{input: 100, expected: 'One hundred'},
{input: 1000, expected: 'One thousand'},
{input: 10000, expected: 'Ten thousand'},
{input: 100000, expected: 'One hundred thousand'},
]
theoretically('the number {input} is correctly translated to string', theories, theory => {
const output = NumberToLongString(theory.input);
expect(output).toBe(theory.expected);
})
}); ``` The input string uses string-format for formatting. Additionally to the fields available in your theory you can also use $idx for the index of the theory and $no for the number of the theory. If you want to do more complex test name creation you can supply a function which takes the parameters of the theory and the index ``` import theoretically from 'jest-theories'; describe('Bigger than 1000', () => {
const theories = [
{input: 100, expected: false},
{input: 1000, expected: false},
{input: 10000, expected: true},
{input: 100000, expected: true},
]
theoretically(({input, expected}) => `the number ${input} is ${expected ? '' : 'not'} bigger than 1000`, theories, theory => {
const output = IsBiggerThan1000(theory.input);
expect(output).toBe(theory.expected);
})
}); ```

Inspiration

Inspiration from jasmine-theories and XUnit.