使用 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

在命令行运行

You can run Jest directly from the CLI (if it's globally available in your PATH, e.g. by yarn global add jest) with variety of useful options.

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

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

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

更多配置

使用 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