atlassian / Jest In Case
Licence: mit
Jest utility for creating variations of the same test
Stars: β 902
Programming Languages
javascript
184084 projects - #8 most used programming language
Projects that are alternatives of or similar to Jest In Case
Javascript Testing Best Practices
ππ π’ Comprehensive and exhaustive JavaScript & Node.js testing best practices (August 2021)
Stars: β 13,976 (+1449.45%)
Mutual labels: jest, test
Jest Html Reporters
π Reporter for jest test framework. π
Stars: β 245 (-72.84%)
Mutual labels: jest, test
Jest Html Reporter
Jest test results processor for generating a summary in HTML
Stars: β 161 (-82.15%)
Mutual labels: jest, test
Gest
π¨βπ» A sensible GraphQL testing tool - test your GraphQL schema locally and in the cloud
Stars: β 109 (-87.92%)
Mutual labels: jest, test
Jest Expect Message
Add custom message to Jest expects ππ―
Stars: β 240 (-73.39%)
Mutual labels: jest, test
jest-launchdarkly-mock
Easily unit test LaunchDarkly feature flagged components with jest
Stars: β 14 (-98.45%)
Mutual labels: jest, test
xv
β βοΈ zero-config test runner for simple projects
Stars: β 588 (-34.81%)
Mutual labels: jest, test
React Generate Props
Generate default props based on your React component's PropTypes
Stars: β 23 (-97.45%)
Mutual labels: jest, test
puppeteer-screenshot-tester
Small library that allows us to compare screenshots generated by puppeteer in our tests.
Stars: β 50 (-94.46%)
Mutual labels: jest, test
Snap Shot
Jest-like snapshot feature for the rest of us, works magically by finding the right caller function
Stars: β 170 (-81.15%)
Mutual labels: jest, test
Vuex Mock Store
β
Simple and straightforward Vuex Store mock for vue-test-utils
Stars: β 246 (-72.73%)
Mutual labels: jest, test
Webdriverio
Next-gen browser and mobile automation test framework for Node.js
Stars: β 7,214 (+699.78%)
Mutual labels: test
jest-in-case
Jest utility for creating variations of the same test
Example
import { add, subtract } from './math';
import cases from 'jest-in-case';
cases('add(augend, addend)', opts => {
expect(add(opts.augend, opts.addend)).toBe(opts.total);
}, [
{ name: '1 + 1 = 2', augend: 1, addend: 1, total: 2 },
{ name: '2 + 1 = 3', augend: 2, addend: 1, total: 3 },
{ name: '3 + 1 = 4', augend: 3, addend: 1, total: 4 },
]);
Installation
yarn add --dev jest-in-case
Usage
In your Jest tests, import cases
from
jest-in-case
.
import cases from 'jest-in-case';
// or
const cases = require('jest-in-case');
Then you can call cases
with a title
, a tester
, and some testCases
.
cases(title, tester, testCases);
testCases
can either be an array of objects with a name
property:
cases('add(augend, addend)', opts => {
expect(add(opts.augend, opts.addend)).toBe(opts.total);
}, [
{ name: '1 + 1 = 2', augend: 1, addend: 1, total: 2 },
{ name: '2 + 1 = 3', augend: 2, addend: 1, total: 3 },
{ name: '3 + 1 = 4', augend: 3, addend: 1, total: 4 },
]);
Or an object of objects with the names as the keys:
cases('subtract(minuend, subtrahend)', opts => {
expect(subtract(opts.minuend, opts.subtrahend)).toBe(opts.difference);
}, {
'1 - 1 = 0': { minuend: 1, subtrahend: 1, difference: 0 },
'2 - 1 = 1': { minuend: 2, subtrahend: 1, difference: 1 },
'3 - 1 = 2': { minuend: 3, subtrahend: 1, difference: 2 },
});
Inside of a test case you can put whatever properties you want, except for
name
, only
, or skip
:
cases('title', fn, [
{ name: 'reserved 1', only: true, skip: true, whatever: 'you', want: 'here' },
{ name: 'reserved 2', only: true, skip: true, whatever: 'you', want: 'here' },
{ name: 'reserved 3', only: true, skip: true, whatever: 'you', want: 'here' },
]);
-
name
is passed totest(name, fn)
to become the name of your test - When
only
is set totrue
it will use Jest'stest.only
function - When
skip
is set totrue
it will use Jest'stest.skip
function
The tester
function is called on each test case with your options:
cases('title', opts => {
console.log('passed: ', opts);
}, {
'test 1': { foo: 1 },
'test 2': { bar: 2 },
'test 3': { baz: 3 },
});
// passed: { foo: 1 }
// passed: { bar: 2 }
// passed: { baz: 3 }
Your tester function works just like functions passed to Jest's test
function
do (Just with a prepended argument):
cases('async functions', async opts => {
let result = await somethingAsync(opts.input);
expect(result).toEqual(opts.result);
}, {
'test 1': { ... },
'test 2': { ... },
});
cases('done callback', (opts, done) => {
somethingAsync(opts.input, result => {
expect(result).toEqual(result);
done();
});
}, {
'test 1': { ... },
'test 2': { ... },
});
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].