jest-each-object
v1.0.0
Published
Jest Parameterised Testing with objects
Downloads
16,322
Readme
Jest Parameterised Testing with objects
What it's for
jest-each and Jest's built in it.each()
etc methods are great for defining a batch of test cases in one go.
it.each( [
[1, 2, 3],
[4, 5, 9]
] )('%s + %s = %s', (left, right, sum) => {
expect(left + right).toBe(sum);
} );
But the test name has to be constructed in printf-style, which doesn't allow named parameters. This sometimes makes the cases hard to write clearly.
This library is a solution to that problem.
Usage
Stand-alone
const eachObject = require('jest-each-object');
eachObject( [
{left: 1, right: 2, sum: 3},
{left: 4, right: 5, sum: 9},
] ).it('$left + $right = $sum', ( {left, right, sum} ) => {
expect(left + right).toBe(sum);
} );
eachObject()
has same signature as jest-each. You can postpend eachObject()
with:
.it()
.test()
.describe()
.it.skip()
/.test.skip()
/.describe.skip()
.it.only()
/.test.only()
/.describe.only()
Add global methods
At the top of your test file:
require('jest-each-object/register');
Now you can substitute .eachObject()
anywhere you could use .each()
.
it.eachObject( [
{left: 1, right: 2, sum: 3},
{left: 4, right: 5, sum: 9},
] )('$left + $right = $sum', ( {left, right, sum} ) => {
expect(left + right).toBe(sum);
} );
describe.eachObject( /* ... */ )( /* ... */ );
it.skip.eachObject( /* ... */ )( /* ... */ );
describe.only.eachObject( /* ... */ )( /* ... */ );
xdescribe.eachObject( /* ... */ )( /* ... */ );
/* ... etc etc ... */
Credits
The clever stuff is done by this library's dependency jest-each-table. jest-each-object
just adds sugar.
Tests
Use npm test
to run the tests. Use npm run cover
to check coverage.
Changelog
See changelog.md
Issues
If you discover a bug, please raise an issue on Github. https://github.com/overlookmotel/jest-each-object/issues
Contribution
Pull requests are very welcome. Please:
- ensure all tests pass before submitting PR
- add tests for new features
- document new functionality/API additions in README
- do not add an entry to Changelog (Changelog is created when cutting releases)