愉快的 JavaScript 测试
- 开发者就绪。一个全面的 JavaScript 测试解决方案。对于大多数 JavaScript 项目来说,开箱即用。
- 即时反馈。快速、交互式的观察模式,只运行与更改文件相关的测试文件。
- 快照测试。捕捉大型对象的快照,以简化测试并分析它们如何随时间变化。
在 jestjs.io 上查看更多。
入门
使用 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 来测试两个值完全相同。
这个测试使用 expect 和 toBe 来测试两个值是否完全相同。要了解 Jest 可以测试的其他内容,请看使用匹配器。
从命令行运行
你可以直接从 CLI 运行 Jest(如果它在你的 PATH 中是全局可用的,例如通过 yarn global add jest 或 npm install jest --global),并提供各种有用的选项。
下面是如何在与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,您可以通过在项目根目录下创建一个 babel.config.js 文件来使用 Babel 来锁定您当前版本的 Node。
// 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'); // 你可以使用 isTest 来决定使用什么预设和插件。 return { // ... }; };
注意:babel-jest 是在安装 Jest 时自动安装的,如果您的项目中存在 babel 配置,它将自动转换文件。为了避免这种行为,您可以明确地重置转换配置选项。
// jest.config.js module.exports = { transform: {}, };
使用 webpack
Jest 可以用于使用 webpack 管理资产、样式和编译的项目中,与其他工具相比,webpack 确实提供了一些独特的挑战。请参考 webpack 指南来入门。
使用 parcel
Jest 可以用于使用 parcel-bundler 管理资产、样式和编译的项目中,类似于 webpack。Parcel 不需要任何配置。
使用 TypeScript
Jest 支持 TypeScript,通过 Babel。首先,确保你遵循了上面的 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', ], };
注意,在 Babel 中使用 TypeScript 有一些注意事项。因为 Babel 中对 TypeScript 的支持是转置的,所以 Jest 不会在您的测试运行时对它们进行类型检查。如果您想要这样,您可以使用 ts-jest。
文档
在 Jest 官方网站上了解更多关于使用 Jest 的信息!
徽章
向世界展示您正在使用 Jest
[](https://github.com/facebook/jest) [](https://github.com/facebook/jest)
许可证
Jest 是 MIT 授权的。
(The first version translated by vz on 2020.08.30)