关于 unit-testing-framework
面向开发者的单元测试实践指南,帮助编写快速、隔离且易维护的测试。内容涵盖 AAA 模式、模拟依赖、异步代码和边界情况。
主要功能
- 01遵循 AAA 测试结构
- 02覆盖边界与错误情况
- 03模拟外部依赖
- 04测试异步代码与覆盖率
- 05提供多语言测试参考
适用场景
- 01为新代码编写单元测试
- 02通过测试安全地重构
- 03建立团队测试规范
- 04编写测试工具与模拟对象
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill unit-testing-framework安装后在 Claude Code 中输入/unit-testing-framework确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/example-complete-test-suite.mdmocking-test-doubles.mdtest-cases-by-language.mdtest-structure-aaa-pattern.mdtesting-async-code.mdtesting-edge-cases.mdscripts/scaffold-tests.shtemplates/test-template.js详细介绍
单元测试框架
目录
概述
遵循行业最佳实践和 AAA(Arrange-Act-Assert,即准备-执行-断言)模式,编写快速、隔离、易读且易维护的有效单元测试。
适用场景
- 为新代码编写测试
- 提升测试覆盖率
- 建立测试规范
- 在确保测试安全的前提下重构
- 实施 TDD(测试驱动开发)
- 创建测试工具和模拟对象
快速开始
最小可运行示例:
// Jest/JavaScript example
describe("UserService", () => {
describe("createUser", () => {
it("should create user with valid data", async () => {
// Arrange - Set up test data and dependencies
const userData = {
email: "[email protected]",
firstName: "John",
lastName: "Doe",
};
const mockDatabase = createMockDatabase();
const service = new UserService(mockDatabase);
// Act - Execute the function being tested
const result = await service.createUser(userData);
// Assert - Verify the outcome
expect(result.id).toBeDefined();
expect(result.email).toBe("[email protected]");
expect(mockDatabase.save).toHaveBeenCalledWith(
expect.objectContaining(userData),
);
});
});
});
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| 测试结构(AAA 模式) | 测试结构(AAA 模式) |
| 各语言的测试用例 | 各语言的测试用例 |
| 模拟与测试替身 | 模拟与测试替身 |
| 异步代码测试 | 异步代码测试、测试覆盖率 |
| 边界情况测试 | 边界情况测试 |
| 示例:完整测试套件 | import { UserService } from "./user-service"; |
最佳实践
✅ 应该做
- 在编写代码之前或同时编写测试(TDD)
- 每个测试只测试一件事
- 使用清晰的测试名称
- 遵循 AAA 模式
- 测试边界情况和错误条件
- 保持测试隔离且相互独立
- 适当使用 setup/teardown
- 模拟外部依赖
- 确保关键路径有较高的覆盖率
- 让测试保持快速(每个测试 < 10ms)
- 对相似情况使用参数化测试
- 测试公开接口,而非实现细节
❌ 不应该做
- 测试实现细节
- 编写相互依赖的测试
- 忽略失败的测试
- 测试第三方库代码
- 在单元测试中使用真实数据库/API
- 让测试过于复杂
- 跳过边界情况
- 忘记清理资源
- 测试所有内容(聚焦业务逻辑)
- 编写不稳定的测试
评论
支持 Markdown