Introduction to Jest Runner
Jest Runner is an essential tool for running Jest tests efficiently in your JavaScript applications. This guide introduces Jest Runner and dives into its various APIs with practical examples.
Getting Started with Jest Runner
To begin using Jest Runner, you need to install it in your project:
npm install jest jest-runner
Overview of Key APIs
Basic Configuration
Jest Runner can be configured within the project’s package.json
file or a separate Jest config file:
{ "jest": { "runner": "jest-runner", "testMatch": ["**/__tests__/**/*.js?(x)", "**/?(*.)+(spec|test).js?(x)"] } }
Running Tests Programmatically
You can run tests programmatically using the Jest Runner API:
const { runCLI } = require('jest'); async function runTests() { const { results } = await runCLI({}, [process.cwd()]); console.log(results.success ? 'Tests passed' : 'Tests failed'); } runTests();
Custom Runners
Create a custom runner by extending the Jest Runner base class:
const { TestRunner } = require('jest-runner'); class CustomRunner extends TestRunner { async runTests(tests, watcher, onStart, onResult, onFailure, options) { // Custom logic for running tests return super.runTests(tests, watcher, onStart, onResult, onFailure, options); } } module.exports = CustomRunner;
Using Projects
Configure multiple projects for different setups:
{ "jest": { "projects": ["/projectA", " /projectB"] } }
App Example with Jest Runner
The following example demonstrates a simple application tested with Jest Runner:
// sum.js function sum(a, b) { return a + b; } module.exports = sum; // sum.test.js const sum = require('./sum'); test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
Advanced API Usage
Mock Functions
Utilize mock functions to spy on behavior:
const myMock = jest.fn(); myMock.mockReturnValueOnce(10).mockReturnValueOnce('x').mockReturnValue(true); console.log(myMock(), myMock(), myMock(), myMock());
Timers
Mock the timers using Jest’s timer mocks:
jest.useFakeTimers(); function timerGame(callback) { console.log('Ready....go!'); setTimeout(() => { console.log('Time\'s up -- stop!'); callback && callback(); }, 1000); } test('waits 1 second before ending the game', () => { const callback = jest.fn(); timerGame(callback); // Fast-forward until all timers have been executed jest.runAllTimers(); expect(callback).toBeCalled(); });
By mastering these APIs, you can harness the full potential of Jest Runner to automate your tests effectively, ensuring a robust and reliable codebase.
Hash: bb25f956b21031df5fc55d34299d205cadd503af57ee626c7621a414b938f911