mcpField
U
unit-testing-framework

unit-testing-framework

github.com/aj-geddes测试与质量373598 次安装34 周前更新
代码仓库

关于 unit-testing-framework

面向开发者的单元测试实践指南,帮助编写快速、隔离且易维护的测试。内容涵盖 AAA 模式、模拟依赖、异步代码和边界情况。

主要功能

  1. 01遵循 AAA 测试结构
  2. 02覆盖边界与错误情况
  3. 03模拟外部依赖
  4. 04测试异步代码与覆盖率
  5. 05提供多语言测试参考

适用场景

  1. 01为新代码编写单元测试
  2. 02通过测试安全地重构
  3. 03建立团队测试规范
  4. 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.md
mocking-test-doubles.md
test-cases-by-language.md
test-structure-aaa-pattern.md
testing-async-code.md
testing-edge-cases.md
scripts/
scaffold-tests.sh
templates/
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