0Pricing
jQuery Academy · 课时

设置测试环境

使用 Jest 或 QUnit 等工具配置测试环境,并设置断言来验证 jQuery 函数和插件的行为。

设置测试环境 是 CoddyKit 上的免费 jQuery Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 jQuery Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 jQuery Academy 课程共包含 3 节课。

为什么要测试 jQuery 代码?

为 jQuery 代码编写测试,对于构建稳健且易于维护的 Web 应用程序至关重要。测试有助于及早发现错误,并确保代码按预期运行。

  • 防止回归:确保新的更改不会破坏现有功能。
  • 提高代码质量:促使您编写模块化且可测试的代码。
  • 促进协作:清晰记录各个组件应如何工作。

选择测试运行器

要测试 JavaScript(包括 jQuery),您需要一个测试运行器。该工具会执行测试并报告结果。

以下是两个常用选项:

  • Jest:Facebook 开发的现代化、功能丰富的测试框架,广泛用于 React,也非常适合任何 JS 项目。
  • QUnit:专用于 jQuery 的测试框架,比 Jest 更简单,但功能也较少。

本课将重点介绍 Jest 的设置,因为它功能全面且应用广泛。

初始化项目(Node.js)

安装 Jest 之前,您需要先拥有一个 Node.js 项目。如果还没有,可以轻松创建一个。

在终端中进入项目目录,然后运行:

npm init -y

此命令会创建一个 package.json 文件,用于管理项目的依赖项和脚本。

安装 Jest 和 JSDOM

现在,让我们安装 Jest。由于 jQuery 经常与浏览器的 DOM(文档对象模型)交互,因此还需要 jest-environment-jsdom。JSDOM 会在 Node.js 中提供类似浏览器的环境,使您的 jQuery 代码能够操作虚拟 DOM。

将它们作为开发依赖项安装:

npm install --save-dev jest jest-environment-jsdom

这会将 Jest 和 JSDOM 添加到您的 package.json 中。

为 JSDOM 配置 Jest

要让 Jest 使用 JSDOM,需要对其进行配置。您可以在 package.json 中添加 test 脚本,也可以创建一个 jest.config.js 文件。

选项 1:在 package.json 中配置

{
  "name": "my-jquery-app",
  "version": "1.0.0",
  "scripts": {
    "test": "jest --env=jsdom"
  },
  "devDependencies": {
    "jest": "^29.x.x",
    "jest-environment-jsdom": "^29.x.x"
  }
}

--env=jsdom 标志可确保 Jest 在 JSDOM 环境中运行测试。

您的第一个测试文件

Jest 会在 __tests__ 目录中查找测试文件,或查找以 .test.js(或 .spec.js)结尾的文件。让我们创建一个简单的测试文件。

在项目根目录中创建名为 __tests__ 的目录,然后添加一个类似 __tests__/my-feature.test.js 的文件:

// __tests__/my-feature.test.js

describe('My Feature', () => {
  test('should do something basic', () => {
    // Test logic will go here
  });
});

describe 用于将相关测试分组,而 test(或 it)用于定义单个测试用例。

为测试导入 jQuery

要测试 jQuery 代码,需要将 jQuery 本身导入测试文件。您可以通过 npm 安装 jQuery:npm install jquery。

然后,在测试文件中导入它:

// __tests__/my-feature.test.js
const $ = require('jquery');

describe('My jQuery Feature', () => {
  // Setup for each test
  beforeEach(() => {
    // Create a fresh DOM element for each test
    document.body.innerHTML = '
Hello
'; }); test('should add a class to the element', () => { const element = $('#test-element'); element.addClass('highlight'); expect(element.hasClass('highlight')).toBe(true); }); });

编写基本断言

断言用于验证代码是否按预期运行。Jest 将 expect() 函数与匹配器结合使用来进行断言。

下面是一个简单的 JavaScript 示例(并非 jQuery 专用,但可以展示断言的用法):

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

// Example of how Jest would test this:
// expect(addNumbers(2, 3)).toBe(5);
// expect(addNumbers(-1, 1)).toBe(0);

console.log("2 + 3 = " + addNumbers(2, 3));
console.log("5 + 10 = " + addNumbers(5, 10));

常用 Jest 匹配器

Jest 提供了丰富的匹配器。以下是您将使用的一些常见匹配器:

  • .toBe(value):检查是否完全相等(类似于 ===)。
  • .toEqual(value):检查对象或数组是否深度相等。
  • .not.toBe(value):检查是否不相等。
  • .toBeTruthy() / .toBeFalsy():检查真值或假值。
  • .toContain(item):检查数组或字符串是否包含某个项目。

对于 jQuery,您通常会将这些匹配器与 jQuery 方法结合使用,例如 expect($element.text()).toBe('Expected Text');

运行测试

设置好测试文件后,运行测试非常简单。只需使用我们在 package.json 中定义的脚本:

npm test

Jest 会找到所有测试文件,在 JSDOM 环境中运行它们,并在终端中报告结果。报告会显示哪些测试通过、哪些失败,并提供失败测试的详细信息。

快速检查设置

您已经学会了如何使用 Jest 和 JSDOM 为 jQuery 设置测试环境。对于支持 DOM 的基本 Jest 设置,以下哪些命令和配置是必需的?

回顾:设置测试环境

在本课中,您学习了如何使用 Jest 为 jQuery 应用程序设置稳健的测试环境。

  • 使用 npm init 初始化了一个 Node.js 项目。
  • 安装了 Jest 和 jest-environment-jsdom,以模拟浏览器环境。
  • 在 package.json 中配置 Jest,使其使用 JSDOM。
  • 了解了如何组织测试文件、导入 jQuery,以及使用 Jest 匹配器编写基本断言。

这些基础知识使您能够编写有效的测试,确保 jQuery 代码可靠且易于维护。

常见问题解答

「设置测试环境」课时是免费的吗?

是的 — 「设置测试环境」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 jQuery Academy 课程的其余内容,请升级到 CoddyKit PRO。 jQuery Academy 课程共包含 3 节课。

「设置测试环境」这节课中我会学到什么?

使用 Jest 或 QUnit 等工具配置测试环境,并设置断言来验证 jQuery 函数和插件的行为。 你通过在浏览器中直接运行的动手代码来练习 jQuery Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 jQuery Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 jQuery Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「设置测试环境」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 jQuery Academy 课中编写并运行代码吗?

能。每节 jQuery Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. jQuery 单元测试简介
  2. 设置测试环境
  3. 编写有效的 jQuery 测试
← 返回 jQuery Academy