Jest for JavaScript (Node.js): 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Jest,为什么需要它?



Jest 是一个强大且流行的 JavaScript 代码测试框架,由 Facebook (Meta) 开发。它提供了编写单元测试、集成测试和端到端测试所需的一切“开箱即用”功能:用于创建断言 (assertions)、模拟 (mocking)、间谍 (spies)、定时器 (timers) 的工具,以及内置的代码覆盖率 (code coverage) 测量工具。



Jest 在 React 生态系统中被广泛使用,但也非常适合测试任何 JavaScript 代码,包括 Node.js、Angular、Vue.js 及其他框架的应用。



为什么需要 Jest?

  • 自动化检查: 允许您在每次更改后快速可靠地检查代码是否正常运行。
  • 防止回归: 测试有助于确保新代码不会破坏旧功能。
  • 文档: 编写良好的测试可作为活文档,展示每个函数或模块应如何工作。
  • 重构信心: 拥有测试可以安全地重写和改进代码。
  • 易于配置: Jest “开箱即用”,无需复杂配置。


安装 Jest



Jest 通过包管理器 npm 或 yarn 安装。对于 Node.js 项目,这是标准方式。



# 作为开发依赖安装(推荐)npm install --save-dev jest

# 或使用 yarnyarn add --dev jest


安装后,将运行测试的脚本添加到您的 package.json 中:



{  "scripts": {    "test": "jest",    "test:watch": "jest --watch", // 在监视模式下运行    "test:coverage": "jest --coverage" // 运行并生成覆盖率报告  }}


现在您可以使用命令 npm test 运行测试。



快速入门及代码示例



假设我们有一个用于数学运算的简单模块 math.js:



// math.jsfunction add(a, b) {  return a + b;}

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

module.exports = { add, subtract };


创建一个测试文件 math.test.js(Jest 默认查找扩展名为 .test.js 或 .spec.js 的文件):



// math.test.jsconst { add, subtract } = require('./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);});


运行测试:



npm test


您将在控制台中看到测试结果报告。如果一切正确,两个测试都将标记为绿色 ✓。



Jest 的主要方法和函数



Jest 提供了丰富的 API。让我们看看 10 个关键方法,它们将覆盖您 90% 的任务。



1. test(name, fn, timeout) / it(name, fn, timeout)

作用: 定义一个新的测试。 test 和 it 是同义词。您可以使用任何一个。

参数:

  • name (string) — 测试的名称,将显示在报告中。
  • fn (function) — 包含测试逻辑(断言)的函数。
  • timeout (number, 可选) — 测试的超时时间(毫秒),默认为 5000。

示例:

test('two plus two equals four', () => {  expect(2 + 2).toBe(4);});

it('string "hello" has length 5', () => { expect('hello').

推荐