使用 yarn 安装 Jest︰

  1. yarn add --dev jest

或使用 npm

  1. npm install --save-dev jest

注意:Jest 的文档统一使用 yarn 命令,不过您也可以使用 npm。 您可以在此处的 Yarn 文档了解 yarnnpm 之间的差异。

举个例子,我们先写一个两数相加的函数。 首先,创建 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. "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 测试!

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

命令行运行

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

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

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

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

更多配置

生成一个基础配置文件

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

  1. jest --init

使用 Babel

如果需要使用 Babel,可以通过 yarn来安装所需的依赖。

  1. yarn add --dev babel-jest @babel/core @babel/preset-env

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

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

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

**Jest与Babel的协同**

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

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

注意:当你安装 Jest 时,babel-jest 是会被自动安装的,并且如果你的项目下存在一个 Babel 配置文件时,它将会自动对相关文件进行转义。 如果要避免这个行为,你可以显式的重置 transform 配置项:

  1. // jest.config.js
  2. module.exports = {
  3. transform: {},
  4. };
  5. ``` **\*\*Babel 6 支持\*\***
  6. Jest放弃了对Babel 6的支持。我们强烈建议你升级至拥有丰富生态的Babel 7。然而,若你不想升级至Babel 7,保持使用jest@23抑或使用jest@24 + babel-jest@23,展示如下:

“dependencies”: { “babel-core”: “^6.26.3”, “babel-jest”: “^23.6.0”, “babel-preset-env”: “^1.7.0”, “jest”: “^24.0.0” }

  1. 我们通常建议你使用相同版本的各个Jest模块,但你也可以使用上述的Babel6并锁定版本的方式。
  2. ### 使用 webpack
  3. Jest 可以用于使用 [webpack](https://webpack.js.org/) 来管理资源、 样式和编译的项目中。 webpack 与其他工具相比多了一些独特的挑战。 参考 [webpack 指南]($a5ce032ca5d3ea9a.md) 来开始起步。
  4. ### 使用 Parcel
  5. Parcel是一个类似于Webpack的零配置管理资源及样式的构建工具。Jest可以在Parcel构建的项目中使用。可以去[Parcel官网](https://parceljs.org/getting_started.html) 尝试一下。 Refer to the official [docs](https://parceljs.org/getting_started.html) to get started.
  6. ### 使用 TypeScript
  7. Jest可以通过Babel支持TypeScript 首先,在项目中正确的使用[Babel](#using-babel)。 其次,使用Yarn或者Npm安装 `@babel/preset-typescript`

yarn add —dev @babel/preset-typescript

  1. 你需要添加`@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编译器 tsc (或作为构建过程的一部分)。

您可能还想为所使用的Jest版本安装@ types / jest模块。 使用TypeScript编写测试时,这将有助于提供完整的键入内容。

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

  1. yarn add --dev @types/jest