jest-theories
TypeScript icon, indicating that this package has built-in type declarations

1.5.1 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i jest-theories

Weekly Downloads

4,217

Version

1.5.1

License

MIT

Unpacked Size

7.07 kB

Total Files

6

Last publish

Collaborators

  • robpethi