What is @jest/core?
The @jest/core package is the core engine of Jest, a popular JavaScript testing framework. It provides the functionality necessary to run tests, including the test runner, test watcher, and the ability to configure and initialize tests. It is designed for developers who need to write and run tests for their JavaScript code, offering a powerful and flexible testing environment.
What are @jest/core's main functionalities?
Running tests
This feature allows you to programmatically run your tests using Jest. You can specify options and projects to run tests on, making it flexible for different testing scenarios.
jest.runCLI(options, projects).then(result => { console.log('Tests completed'); });
Configuring Jest
This feature enables you to read and manipulate Jest's configuration programmatically. It's useful for custom setups or when integrating Jest into other tools.
const { readConfig } = require('@jest/core');
readConfig(argc, argv).then(config => { console.log('Jest config:', config); });
Using the TestWatcher
The TestWatcher API allows you to listen to events related to the test lifecycle, such as when a test starts or finishes. This is useful for implementing custom behaviors or integrations.
const { TestWatcher } = require('@jest/core');
const watcher = new TestWatcher({ isWatchMode: true });
watcher.on('test_start', test => { console.log('Test started:', test.name); });
Other packages similar to @jest/core
mocha
Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple. It's similar to @jest/core in providing a testing framework, but differs in its interface and default behavior, such as having a different assertion library by default (Chai) and not including a mocking library.
jasmine
Jasmine is a behavior-driven development framework for testing JavaScript code. It does not require a DOM, and it has a clean, obvious syntax so that you can easily write tests. Compared to @jest/core, Jasmine is more focused on the BDD aspect and comes with an assertion library out of the box, whereas Jest provides more utilities for mocking and spying.
ava
AVA is a test runner for Node.js with a concise API, detailed error output, and process isolation for concurrent tests. It's designed to be fast and comes with built-in support for ES6. Unlike @jest/core, AVA emphasizes minimalism and parallel test execution, which can lead to faster test runs for certain projects.