快速开始
- npm
- Yarn
yarn add --dev jest
举个例子,我们先写一个两数相加的函数。 首先,创建 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);
});
随后,将下列配置内容添加到您的 package.json
:
{
"test": "jest"
}
}
最后,运行 yarn test
或 npm run test
,Jest将打印下面这个消息:
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
您刚刚完成了您的首个 Jest 测试!
此测试使用 expect
和 toBe
来测试两值是否一致。 要了解 Jest 能进行的更多测试,请参阅使用匹配器章节。
你可以通过命令行直接运行Jest(前提是jest已经处于你的环境变量 PATH
中,例如通过 yarn global add jest
或 安装的Jest) ,并为其指定各种有用的配置项。
这里演示了如何对能匹配到 my-test
的文件运行 Jest、使用config.json
作为一个配置文件、并在运行完成后显示一个原生的操作系统通知。
jest my-test --notify --config=config.json
如果你愿意了解更多关于通过命令行运行 jest
的内容,请继续阅读 Jest CLI 选项 页面。
更多配置
基于您的项目,Jest将向您提出几个问题,并将创建一个基本的配置文件,每个选项都有一个简短的说明:
- npm
- Yarn
npm install --save-dev babel-jest @babel/core @babel/preset-env
yarn add --dev babel-jest @babel/core @babel/preset-env
可以在工程的根目录下创建一个babel.config.js
文件用于配置与你当前Node版本兼容的Babel:
babel.config.js
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
Babel的配置取决于具体的项目使用场景 ,可以查阅 Babel官方文档来获取更多详细的信息。
**Jest与Babel的协同**
若 process.env.NODE_ENV
未设置,Jest将把它设置为 'test'
。你可以用 if
语句设置Jest执行的编译配置。例如:
babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.
return {
// ...
};
};
jest.config.js
module.exports = {
transform: {},
Jest 可以用于使用 webpack 来管理资源、 样式和编译的项目中。 webpack 与其他工具相比多了一些独特的挑战。 参考 来开始起步。
Parcel是一个类似于Webpack的零配置管理资源及样式的构建工具。Jest可以在Parcel构建的项目中使用。可以去 尝试一下。 请查看Parcel的 官方文档 进行操作。
配置 babel
- npm
- Yarn
npm install --save-dev @babel/preset-typescript
你需要添加@babel/preset-typescript
的预设到babel.config.js
.
babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
不过,在配合使用TypeScript与Babel时,仍然有一些 。 因为Babel对Typescrip的支持是纯编译形式(无类型校验),因此Jest在运行测试时不会对它们进行类型检查。 如果需要类型校验,可以改用ts-jest,也可以单独运行TypeScript编译器 (或作为构建过程的一部分)。
配置 ts-jest
是一个支持 sourcemap
的 TypeScript 预处理器,让你使用 TypeScript 编写 Jest 测试项目
- npm
- Yarn
npm install --save-dev ts-jest
yarn add --dev ts-jest
类型定义
There are two ways to have typed for test files written in TypeScript.
You can use type definitions which ships with Jest and will update each time you update Jest. Simply import the APIs from @jest/globals
package:
sum.test.ts
import {describe, expect, test} from '@jest/globals';
import {sum} from './sum';
describe('sum module', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
});
tip
See the additional usage documentation of describe.each/test.each and .
Or you may choose to install the @types/jest package. It provides types for Jest globals without a need to import them.
- npm
- Yarn
yarn add --dev @types/jest