Introduction to Jest Circus
Jest Circus is the next-generation test runner for Jest, designed to provide flexibility, scalability, and comprehensive support for diverse testing needs. It aims to replace the traditional Jest test runner by offering more powerful features and enhanced APIs.
Getting Started with Jest Circus
To start using Jest Circus, you need to update your Jest configuration:
module.exports = {
testRunner: 'jest-circus/runner',
};
Useful Jest Circus APIs
-
describe.each
This function allows parameterized tests, looping through each value provided and running the tests.
describe.each([ [1, 2, 3], [4, 5, 9] ])( 'adds %i and %i to equal %i', (a, b, sum) => { test(`returns ${sum}`, () => { expect(a + b).toBe(sum); }); } );
-
test.each
Similar to
describe.each
, this function is used to run the same test with different values.test.each([ [1, 2, 3], [4, 5, 9], ])('adds %i and %i to equal %i', (a, b, sum) => { expect(a + b).toBe(sum); });
-
beforeAll and afterAll
These functions allow you to run setup and teardown code once before and after all tests in a file.
beforeAll(() => { // Setup code }); afterAll(() => { // Teardown code });
-
beforeEach and afterEach
These functions run setup and teardown code before and after each test.
beforeEach(() => { // Setup code }); afterEach(() => { // Teardown code });
-
test.concurrent
This function runs tests concurrently, which can significantly speed up the execution of multiple tests that do not depend on each other.
test.concurrent('test 1', async () => { await someAsyncTask(); expect(true).toBe(true); }); test.concurrent('test 2', async () => { await anotherAsyncTask(); expect(true).toBe(true); });
App Example Using Jest Circus APIs
Here’s an example of a simple calculator application tested with Jest Circus:
// calculator.js const add = (a, b) => a + b; const subtract = (a, b) => a - b; module.exports = { add, subtract };
// calculator.test.js const { add, subtract } = require('./calculator');
describe('Calculator', () => {
describe('Addition', () => {
test.each([
[1, 1, 2],
[2, 2, 4],
[3, 3, 6],
])('adds %i and %i to equal %i', (a, b, expected) => {
expect(add(a, b)).toBe(expected);
});
});
describe('Subtraction', () => {
test.each([
[2, 1, 1],
[4, 2, 2],
[6, 3, 3],
])('subtracts %i from %i to equal %i', (a, b, expected) => {
expect(subtract(a, b)).toBe(expected);
});
});
});
By utilizing the powerful APIs offered by Jest Circus, you can enhance the maintainability and readability of your test cases while ensuring comprehensive test coverage.
Hash: 6bcc1739305e648a2c4d75552397bfe787aeb84ddaa8052f001e74956aeb282e