Jest - 安装和环境设置

在本章中,我们将指导您在项目中安装 Jest。Jest 可帮助您对 JavaScript 代码运行测试,尽早发现错误,并确保您的函数、模块或组件正常工作。最后,您将设置好 Jest 并准备就绪。

安装 Jest 前的先决条件

在开始安装 Jest 之前,请确保您具有以下条件:

  • Node.js(v14 或更高版本):Jest 在 Node.js 上运行,因此您需要安装它。建议使用版本 14 或更高版本。如果您没有,请从 Node.js 网站 下载并安装。
  • npm(Node 包管理器):安装 Jest 和管理依赖项需要 npm
  • 代码编辑器(推荐使用 VS Code):代码编辑器对于编写和编辑代码非常重要。 Visual Studio Code (VS Code) 是一种流行的选择,可以很好地与 Node.js 和 Jest 配合使用。
  • JavaScript 项目:如果您还没有项目,请按照以下步骤操作:
    • 创建一个新目录并导航到该目录:
    • mkdir your-project-name
      cd your-project-name
      
    • 初始化一个新的 npm 项目:
    • npm init -y
      
    这将为您的项目创建一个 package.json 文件。以下是它可能的样子。
  • package.json 文件示例

系统验证

安装必要的软件后,使用以下命令验证 Node.jsnpm 的版本:

  • 检查 Node.js 版本:
  • node --version
    
  • 检查 npm 版本:
  • npm --version
    

如果两个命令都返回正确的版本号,则表示您已准备好继续安装 Jest。

分步安装说明

现在您已确认已安装 Node.jsnpm,让我们来看看在您的项目中安装 Jest 的步骤。

导航到您的项目目录

继续之前,请确保您位于项目目录中。如果您还没有到达那里,请运行:

cd path/to/your/project

使用 npm 安装 Jest

# 全局安装
npm install -g jest

# 项目特定安装
npm install --save-dev jest

这会将 Jest 安装为开发依赖项,这意味着它仅在开发和测试期间需要,而不是在生产中。

使用 Yarn 安装 Jest

# 全局安装
yarn global add jest

# 项目特定安装
yarn add --dev jest

Yarn 安装 Jest 的方式与 npm 相同,因此请选择您正在使用的包管理器。

使用 pnpm 安装 Jest (可选)

# 全局安装:
pnpm add -g jest

# 项目特定安装
pnpm add --dev jest

pnpm 是一个替代包管理器,其工作方式与 npmyarn 类似。

如何检查 Jest 是否安装正确?

安装 Jest 后,验证一切是否按预期运行非常重要。

检查 Jest 安装

您可以通过运行以下命令来检查 Jest 是否安装正确:

npx jest --version

此命令将打印已安装的 Jest 版本。如果您看到版本号,则表示 Jest 安装正确。

基本验证:运行简单测试

要进一步验证 Jest 是否按预期工作,您可以运行简单测试。请按照以下步骤操作:

您的项目目录应如下所示:

项目结构

创建源文件 (src/math.js)

src 文件夹中,创建一个包含以下内容的 ma​​th.js 文件:

function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}

module.exports = { add, subtract };

您的 ma​​th.test.js 文件应如下所示:

Math.js

创建测试文件 (tests/math.test.js)

__tests__ 文件夹中,创建一个 ma​​th.test.js 文件,为加法和减法函数编写测试:

const { add, subtract } = require('../src/math');

test('adds 1 + 2 to equal 3', () => {
    expect(add(1, 2)).toBe(3);
});

test('subtracts 5 - 3 to equal 2', () => {
    expect(subtract(5, 3)).toBe(2);
});

您的测试文件应如下所示:

Test Math.js

配置

接下来,通过更新 package.json 文件确保您的项目已准备好运行 Jest。如果需要,您还可以添加 jest.config.js 文件进行高级设置。

更新 package.json:确保您的 package.json 包含以下用于使用 Jest 运行测试的脚本:

{
  "scripts": {
    "test": "jest",
    "test:watch": "jest --watch",
    "test:coverage": "jest --coverage"
  }
}

您的 package.json 应如下所示:

Package Json

可选:jest.config.js:您可以在项目根目录中创建 jest.config.js 文件以进行其他设置,例如启用覆盖率报告。

module.exports = {
  verbose: true,
  collectCoverage: true,
  coverageReporters: ['text', 'lcov'],
  testEnvironment: 'node'
};

它应该看起来像这样:

jest config js

运行测试

文件到位后,您可以使用以下命令运行测试。

# 运行所有测试
npm test

# 监视模式(更改后自动重新运行)
npm run test:watch

# 生成覆盖率报告
npm run test:coverage

示例测试输出

运行测试时,您应该看到如下输出:

测试输出

Jest 将自动查找并运行您的测试文件(例如, __tests__.test.js),确认 Jest 正常运行。

测试命令示例

设置好文件后,您可以使用各种命令运行 jest 测试,每个命令都有不同的用途。以下是最常见的测试:

  • 运行所有测试(默认):要运行所有测试,请执行:
  • jest
    
  • 运行特定测试:要仅运行与模式或文件名匹配的测试:
  • jest my-test # 或
    jest path/to/my-test.js
    
  • 运行与更改的文件相关的测试:运行与更改的文件相关的测试(使用 hg/git 未提交的文件):
  • jest -o
    
  • 运行特定文件的测试:要运行与特定文件相关的测试文件:
  • jest --findRelatedTests path/to/fileA.js path/to/fileB.js
    
  • 运行与特定测试名称匹配的测试:要运行与特定规范名称匹配的测试(与 describe 或 test 中的名称匹配):
  • jest -t "name-of-spec"
    
  • 在监视模式下运行:要启用监视模式并在文件更改时重新运行测试:
    jest --watch # 默认运行 jest -o
    jest --watchAll # 运行所有测试
    
    在监视模式下,您还可以指定文件的名称或路径以关注特定的一组测试。