入门

    • 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. });

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

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

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

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

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

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

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

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

    更多配置

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

    1. jest --init

    如果需要使用 Babel,安装所需的依赖。

    • 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的配置取决于具体的项目使用场景 ,可以查阅 来获取更多详细的信息。

    **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. // ...
    5. };
    6. };

    jest.config.js

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

    Parcel是一个类似于Webpack的零配置管理资源及样式的构建工具。Jest可以在Parcel构建的项目中使用。可以去Parcel官网 尝试一下。 Refer to the official to get started.

    Via babel

    Jest可以通过Babel支持TypeScript。 首先,在项目中正确的使用。 Next, install the @babel/preset-typescript:

    • npm
    • Yarn
    1. npm install --save-dev @babel/preset-typescript
    1. yarn add --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在运行测试时不会对它们进行类型检查。 如果需要类型校验,可以改用,也可以单独运行TypeScript编译器 tsc (或作为构建过程的一部分)。

    Via ts-jest

    ts-jest is a TypeScript preprocessor with source map support for Jest that lets you use Jest to test projects written in TypeScript.

    • npm
    • Yarn
    1. npm install --save-dev ts-jest
    1. yarn add --dev ts-jest

    类型定义

    在使用 @types/* 时,我们推荐使用与依赖包相同版本的类型包 例如,若你使用 26.4.0 版本的jest ,最好也使用26.4.x@types/jest 。 通常需要尽可能的匹配主版本号 (26) 和次版本号 (4)。

    • npm
    • Yarn
    1. yarn add --dev @types/jest