Getting Started
使用 yarn
安装 Jest︰
yarn add --dev jest
或 npm
:
npm install --save-dev jest
注:Jest的文档统一使用yarn
命令,不过使用npm
也是可行的。 你可以在yarn的说明文档里看到yarn
与npm
之间的对比。
让我们开始为一个假设函数编写测试,该函数将两个数字相加。 首先,创建一个 sum.js
文件:
function sum(a, b) {
return a + b;
}
module.exports = sum;
然后,创建一个名为 sum.test.js
的文件。 这将包含我们的实际测试:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
将下面的配置部分添加到你的 package.json
里面:
{
"scripts": {
"test": "jest"
}
}
最后,运行 yarn test
或 npm run test
,Jest将打印下面这个消息:
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
你刚刚成功地写了第一个Jest测试 !
此测试使用 expect
和 toBe
来测试两个值完全相同。 若要了解Jest关于测试方面更多的能力,请参阅 Using Matchers。
在命令行运行
你可以通过命令行直接运行Jest(前提是jest已经处于你的环境变量 PATH
中,例如通过 yarn global add jest
或 npm install jest --global
安装的Jest) ,并为其指定各种有用的配置项。
这里演示了如何对能匹配到 my-test
的文件运行 Jest、使用config.json
作为一个配置文件、并在运行完成后显示一个原生的操作系统通知。
jest my-test --notify --config=config.json
如果你愿意了解更多关于通过命令行运行 jest
的内容,请继续阅读 Jest CLI 选项 页面。
更多配置
使用 Babel
要使用 Babel,请安装 babel-jest
和 regenerator-runtime
两个包:
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
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.
You can also see the example in the Jest repository: https://github.com/facebook/jest/tree/54f4d4ebd3d1a11d65962169f493ce41efdd784f/examples/babel-7
*注意:如果你使用了 `npm` 3 或 4,或者 Yarn,就不用再显式的安装 `regenerator-runtime` 这个包了。*
别忘了在你的项目根文件夹下添加一个 [`.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:
```json
{
"presets": ["env", "react"]
}
现在你就完成了使用所有 ES6 特性和 React 特殊语法所需的配置了。
Note: If you are using a more complicated Babel configuration, using Babel's
env
option, keep in mind that Jest will automatically defineNODE_ENV
astest
. 它不会像 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.
{
"presets": [["env", {"modules": false}], "react"],
"env": {
"test": {
"presets": [["env"], "react"]
}
}
}
注意:当你安装 Jest 时,
babel-jest
是会被自动安装的,并且如果你的项目下存在一个 Babel 配置文件时,它将会自动对相关文件进行转义。 如果要避免这个行为,你可以显式的重置transform
配置项:
// package.json
{
"jest": {
"transform": {}
}
}
使用 webpack
Jest 可以用于使用 webpack 来管理资源、 样式和编译的项目中。 webpack 与其他工具相比多了一些独特的挑战。 参考 webpack 指南 来开始起步。
Using parcel
Jest can be used in projects that use parcel-bundler to manage assets, styles, and compilation similar to webpack. Parcel requires zero configuration. Refer to the official docs to get started.
使用 TypeScript
若要在测试种使用 TypeScript ,你可以用 ts-jest。
You may also want to install the @types/jest
module for the version of Jest you're using. This will help provide full typing when writing your tests with TypeScript.
For
@types/*
modules it's recommended to try to match the version of the associated module. For example, if you are using26.4.0
ofjest
then using26.4.x
of@types/jest
is ideal. In general, try to match the major (26
) and minor (4
) version as closely as possible.
yarn add --dev @types/jest