Jest
Tool for running tests over Javascript/Typecript
Installing
For TypeScript install Jest with ts-jest preprocessor with:
npm install --save-dev jest @types/jest ts-jestBecause we are running with ts-jest create the jest.config.js file, which will inform Jest how to handle .ts files correctly.
npx ts-jest config:initTest files for Jest are named <file>.test.ts.
By specific filename
Specific filename AND path
Run only the tests that were specified with their exact paths.
npx jest --runTestsByPath [path]/[filename]Specific filename
Find and run the tests that cover a space separated list of source files.
It will regex only by the specified name, so if multiple files have the same name it will execute all of them.
npx jest --findRelatedTests [filename]With coverage
npx jest --coverageOn watch mode
Watch files for changes and rerun tests.
To rerun only changed files
# Runs `jest -o` by default
npx jest --watchTo rerun all files
npx jest --watchAllCreating tests
Create a test by using the test() funtion or its alias it().
test('', () => {});
// Or
it('', () => {});Using describe()
describe()Create a block that groups together several related tests.
This isn't required - you can write the test blocks directly at the top level. But this can be handy if you prefer your tests to be organized into groups.
You can also nest describe blocks if you have a hierarchy of tests.
describe('', () => {
it('', () => {});
it('', () => {});
describe('', () => {
it('', () => {});
});
});You define multiple values for a specific test instead of creating multiple test functions with different values.
The .each modifier offers few different ways to define a table of the test cases.
const data = [
{ name: 'a', path: 'path/to/a', count: 1, write: true },
{ name: 'b', path: 'path/to/b', count: 3 },
];
test.each(data)('', ({name, path, count, write}) => {});test.each([
{ a: 1, b: 1, expected: 2 },
{ a: 1, b: 2, expected: 3 },
{ a: 2, b: 1, expected: 3 },
])('.add($a, $b)', ({a, b, expected}) => {});Run specific test
To run only specific test or block of tests use:
test.only('', () => {});
it.only('', () => {});
describe.only('', () => {});Skip tests
To skip tests or block of tests, just append skip modifier right after test | it | describe.
test.skip('', () => {});
it.skip('', () => {});
describe.skip('', () => {});Use the .concurrent modifier to run test concurrently.
You can't use this modifier in describe() blocks.
Is experimental, as for version 29.
Last updated
