快速开始

    • npm
    • Yarn
    1. yarn add --dev jest

    举个例子,我们先写一个两数相加的函数。 首先,创建 sum.js 文件︰

    1. function sum(a, b) {
    2. return a + b;
    3. }
    4. module.exports = sum;

    然后,创建名为 sum.test.js 的文件。 此文件中将包含我们的实际测试︰

    1. const sum = require('./sum');
    2. test('adds 1 + 2 to equal 3', () => {
    3. expect(sum(1, 2)).toBe(3);
    4. });

    随后,将下列配置内容添加到您的 package.json

    1. {
    2. "test": "jest"
    3. }
    4. }

    最后,运行 yarn testnpm run test ,Jest将打印下面这个消息:

    1. PASS ./sum.test.js
    2. adds 1 + 2 to equal 3 (5ms)

    您刚刚完成了您的首个 Jest 测试!

    此测试使用 expecttoBe 来测试两值是否一致。 要了解 Jest 能进行的更多测试,请参阅使用匹配器章节。

    你可以通过命令行直接运行Jest(前提是jest已经处于你的环境变量 PATH中,例如通过 yarn global add jest 或 安装的Jest) ,并为其指定各种有用的配置项。

    这里演示了如何对能匹配到 my-test 的文件运行 Jest、使用config.json 作为一个配置文件、并在运行完成后显示一个原生的操作系统通知。

    1. jest my-test --notify --config=config.json

    如果你愿意了解更多关于通过命令行运行 jest 的内容,请继续阅读 Jest CLI 选项 页面。

    更多配置

    基于您的项目,Jest将向您提出几个问题,并将创建一个基本的配置文件,每个选项都有一个简短的说明:

    • npm
    • Yarn
    1. npm install --save-dev babel-jest @babel/core @babel/preset-env
    1. yarn add --dev babel-jest @babel/core @babel/preset-env

    可以在工程的根目录下创建一个babel.config.js文件用于配置与你当前Node版本兼容的Babel:

    babel.config.js

    1. module.exports = {
    2. presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
    3. };

    Babel的配置取决于具体的项目使用场景 ,可以查阅 Babel官方文档来获取更多详细的信息。

    **Jest与Babel的协同**

    process.env.NODE_ENV 未设置,Jest将把它设置为 'test' 。你可以用 if语句设置Jest执行的编译配置。例如:

    babel.config.js

    1. module.exports = api => {
    2. const isTest = api.env('test');
    3. // You can use isTest to determine what presets and plugins to use.
    4. return {
    5. // ...
    6. };
    7. };

    jest.config.js

    1. module.exports = {
    2. transform: {},

    Jest 可以用于使用 webpack 来管理资源、 样式和编译的项目中。 webpack 与其他工具相比多了一些独特的挑战。 参考 来开始起步。

    Parcel是一个类似于Webpack的零配置管理资源及样式的构建工具。Jest可以在Parcel构建的项目中使用。可以去 尝试一下。 请查看Parcel的 官方文档 进行操作。

    配置 babel

    • npm
    • Yarn
    1. npm install --save-dev @babel/preset-typescript

    你需要添加@babel/preset-typescript的预设到babel.config.js.

    babel.config.js

    1. module.exports = {
    2. presets: [
    3. ['@babel/preset-env', {targets: {node: 'current'}}],
    4. '@babel/preset-typescript',
    5. ],
    6. };

    不过,在配合使用TypeScript与Babel时,仍然有一些 。 因为Babel对Typescrip的支持是纯编译形式(无类型校验),因此Jest在运行测试时不会对它们进行类型检查。 如果需要类型校验,可以改用ts-jest,也可以单独运行TypeScript编译器 (或作为构建过程的一部分)。

    配置 ts-jest

    是一个支持 sourcemap 的 TypeScript 预处理器,让你使用 TypeScript 编写 Jest 测试项目

    • npm
    • Yarn
    1. npm install --save-dev ts-jest
    1. 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

    1. import {describe, expect, test} from '@jest/globals';
    2. import {sum} from './sum';
    3. describe('sum module', () => {
    4. test('adds 1 + 2 to equal 3', () => {
    5. expect(sum(1, 2)).toBe(3);
    6. });
    7. });

    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
      1. yarn add --dev @types/jest