Jest 从安装开始
使用 yarn
安装 Jest︰
yarn add --dev jest
或使用 npm
安装 Jest:
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关于测试方面更多的能力,请参阅使用适配器。
在命令行运行
你可以通过命令行直接运行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 选项 页面。
更多配置
生成一个基础配置文件
基于你的项目,Jest将会提出几个问题,并将创建一个基本的配置文件,每个选项都有一个简短的说明:
jest --init
使用 Babel
如果需要使用 Babel,可以通过 yarn
来安装所需的依赖。
yarn add --dev babel-jest @babel/core @babel/preset-env
可以在工程的根目录下创建一个babel.config.js
文件用于配置与你当前Node版本兼容的Babel:
// babel.config.js
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
};
Babel的配置取决于具体的项目使用场景 ,可以查阅 Babel官方文档来获取更多详细的信息。
使 Babel 配置具有 jest-aware
如果没有设置为其他内容,Jest 将设置process.env.NODE_ENV
为'test'
。你可以在配置中使用它来有条件地仅设置 Jest 所需的编译,例如
// babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.
return {
// ...
};
};
注意:当你安装 Jest 时,babel-jest
是会被自动安装的,并且如果你的项目下存在一个 Babel 配置文件时,它将会自动对相关文件进行转义。 如果要避免这个行为,你可以显式的重置 transform
配置项:
// jest.config.js
module.exports = {
transform: {},
};
Babel 6 支持
Jest 24 放弃了对 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"
}
虽然我们通常建议使用每个 Jest 包的相同版本,但此解决方法将允许你现在继续使用最新版本的 Jest 和 Babel 6。
使用 webpack
Jest 可以用于使用 webpack 来管理资源、 样式和编译的项目中。 webpack 与其他工具相比多了一些独特的挑战。 参考 webpack 指南 来开始起步。
使用 parcel
Jest 可用于使用parcel bundler管理资产、样式和编译(类似于webpack)的项目中。包裹需要零配置。请参考官方文档开始。
使用 TypeScript
Jest 通过 Babel 支持 TypeScript。首先,请确保你遵循了上面使用 Babel 的说明。接下来,通过yarn
安装@babel/preset-typescript
:
yarn add --dev @babel/preset-typescript
然后添加@babel/preset-typescript
到你的babel.config.js
.
// babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
+ '@babel/preset-typescript',
],
};
不过,在配合使用TypeScript与Babel时,仍然有一些注意事项 。 因为 Babel 对 TypeScript 的支持是 transpilation,Jest 不会在运行时对你的测试进行类型检查。 如果你想实现这个功能,你可以使用 ts-jest
。