使用 yarn 安装 Jest︰

  1. yarn add --dev jest

npm

  1. npm install --save-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. "scripts": {
  3. "test": "jest"
  4. }
  5. }

最后,运行 yarn test, Jest将打印以下消息:

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

你刚刚成功地写了第一个Jest测试 !

此测试使用 expecttoBe 来测试两个值完全相同。 若要了解Jest关于测试方面更多的能力,请参阅 Using Matchers

在命令行运行

你可以直接通过 CLI 运行 Jest (如果它已经在你的全局路径 PATH 中,比如已经通过 yarn global add jest 安装) ,并指定各种有用的选项。

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

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

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

更多配置

生成一个基础配置文件

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

  1. jest --init

使用 Babel

要使用 Babel,请安装 babel-jestregenerator-runtime 两个包:

  1. yarn add --dev babel-jest babel-core regenerator-runtime

Note: If you are using Babel version 7 then you need to install babel-jest, babel-core@^7.0.0-bridge.0 and @babel/core with the following command:

yarn add —dev babel-jest babel-core@^7.0.0-bridge.0 @babel/core regenerator-runtime

  1. You will need to use `babel.config.js` in order to transpile `node_modules`. See https://babeljs.io/docs/en/next/config-files for more information.
  2. You can also see the example in the Jest repository: https://github.com/facebook/jest/tree/54f4d4ebd3d1a11d65962169f493ce41efdd784f/examples/babel-7
  3. *注意:如果你使用了 `npm` 3 4,或者 Yarn,就不用再显式的安装 `regenerator-runtime` 这个包了。*
  4. 别忘了在你的项目根文件夹下添加一个 [`.babelrc`](https://babeljs.io/docs/usage/babelrc/) 配置文件。 For example, if you are using ES6 and [React.js](https://facebook.github.io/react/) with the [`babel-preset-env`](https://babeljs.io/docs/plugins/preset-env/) and [`babel-preset-react`](https://babeljs.io/docs/plugins/preset-react/) presets:
  5. ```json
  6. {
  7. "presets": ["env", "react"]
  8. }

现在你就完成了使用所有 ES6 特性和 React 特殊语法所需的配置了。

Note: If you are using a more complicated Babel configuration, using Babel's env option, keep in mind that Jest will automatically define NODE_ENV as test. 它不会像 Babel 那样在 NODE_ENV 没有被设置时默认使用 development

Note: If you've turned off transpilation of ES6 modules with the option { "modules": false }, you have to make sure to turn this on in your test environment.

  1. {
  2. "presets": [["env", {"modules": false}], "react"],
  3. "env": {
  4. "test": {
  5. "presets": [["env"], "react"]
  6. }
  7. }
  8. }

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

  1. // package.json
  2. {
  3. "jest": {
  4. "transform": {}
  5. }
  6. }

使用 webpack

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

使用 TypeScript

若要在测试种使用 TypeScript ,你可以用 ts-jest