设置测试环境
使用 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 testJest 会找到所有测试文件,在 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 反馈 — 无需本地设置。