Skip to content

RobPethick/jest-theories

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A theory library for use with Jest

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •