0Pricing
JavaScript Academy · 课时

测试思维——微型断言、AAA、失败→通过→重构

养成编写小型测试的习惯:理解断言、安排–执行–断言,以及失败→通过→重构循环

测试思维——微型断言、AAA、失败→通过→重构 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 3 节课。

为什么要有测试思维

目标:用微小而可靠的测试进行思考。

  • 使用小型断言检查结果
  • AAA:准备 → 执行 → 断言
  • 失败 → 通过 → 重构循环
  • 根据行为命名测试
测试思维——微型断言、AAA、失败→通过→重构 — 插图 1

一个微小的断言

一个小型的 assertEqual 会输出通过或失败。这与真正的测试框架所做的事情类似。

// Minimal assertEqual for quick checks
function assertEqual(actual, expected, name) {
  if (actual === expected) {
    console.log("✅", name);
  } else {
    console.log("❌", name, "expected:", expected, "got:", actual);
  }
}

// Demo check
assertEqual(2 + 3, 5, "adds numbers");
测试思维——微型断言、AAA、失败→通过→重构 — 插图 2

准备–执行–断言

AAA 让测试更易读:准备数据,调用函数,然后检查结果。

// AAA: Arrange → Act → Assert
// Arrange: prepare inputs
function sum(a, b) { return a + b; }
const a = 2;
const b = 4;

// Act: call the function
const result = sum(a, b);

// Assert: compare
assertEqual(result, 6, "sum returns a + b");
测试思维——微型断言、AAA、失败→通过→重构 — 插图 3

失败→通过→重构

先编写一个失败的测试(失败),让它通过(通过),然后清理代码(重构)。

// Red → Green → Refactor with a tiny example
// 1) Red: write a failing test (expect wrong implementation)
function greet(name) { return "Hi " + name; } // simple implementation

// Intentionally failing expectation first (red)
assertEqual(greet("Ayla"), "Hello Ayla", "greet says Hello"); // likely fails

// 2) Green: fix the code to satisfy the test
function greetFixed(name) { return "Hello " + name; }
assertEqual(greetFixed("Ayla"), "Hello Ayla", "greet says Hello (fixed)");

// 3) Refactor: improve code without changing behavior
function greetRefined(name) {
  const cleaned = String(name).trim();
  return "Hello " + cleaned;
}
assertEqual(greetRefined(" Ayla "), "Hello Ayla", "greet trims input");
测试思维——微型断言、AAA、失败→通过→重构 — 插图 4

以行为为中心的名称

根据函数应该做的事情命名检查:涵盖边界情况和典型情况。

// Clear names describe behavior, not internals
function isAdult(age) { return age >= 18; }

assertEqual(isAdult(18), true, "isAdult returns true at boundary 18");
assertEqual(isAdult(17), false, "isAdult returns false below boundary");
测试思维——微型断言、AAA、失败→通过→重构 — 插图 5

微小而专注的测试

提示:

  • 让测试保持微小且专注(每个测试只验证一个想法)。
  • 测试正常路径和一个边界情况。
  • 优先使用纯函数,以便轻松测试。
  • 之后再使用 Jest/Vitest 自动化;先培养测试思维。
测试思维——微型断言、AAA、失败→通过→重构 — 插图 6

AAA 模式测验

快速检查:AAA 模式。

测试思维——微型断言、AAA、失败→通过→重构 — 插图 7

回顾

回顾:使用小型断言,遵循 AAA,并反复进行失败 → 通过 → 重构。从小处开始——对于初学者来说,清晰胜过复杂。

测试思维——微型断言、AAA、失败→通过→重构 — 插图 8

常见问题解答

「测试思维——微型断言、AAA、失败→通过→重构」课时是免费的吗?

是的 — 「测试思维——微型断言、AAA、失败→通过→重构」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 3 节课。

「测试思维——微型断言、AAA、失败→通过→重构」这节课中我会学到什么?

养成编写小型测试的习惯:理解断言、安排–执行–断言,以及失败→通过→重构循环 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 JavaScript Academy 需要有经验吗?

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

「测试思维——微型断言、AAA、失败→通过→重构」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 测试思维——微型断言、AAA、失败→通过→重构
  2. 使用 ESLint 进行代码检查;使用 Prettier 格式化
  3. 持续集成基础——每次推送都运行代码检查和测试
← 返回 JavaScript Academy