SuperAPI AI 工具集

testing-patterns

测试与质量

查看项目

更新于 10-15 09:43

技能介绍

Testing Patterns 是一份面向全栈开发的测试实践指南,核心目标是通过有策略的测试建立对代码质量的信心。

一、测试哲学 文档提出“测试奖杯”(Testing Trophy)模型,从下到上依次为:静态检查(TypeScript、ESLint)、单元测试(数量多、速度快)、集成测试(数量更多)、E2E 测试(数量少)。不同测试类型承担不同职责:静态检查在编写时捕获错误;单元测试针对纯函数和工具函数提供快速精确反馈;集成测试验证组件与依赖之间的契约;E2E 测试覆盖用户流程,提供真实使用场景下的信心。文档同时列出不应测试的内容:实现细节(内部状态、私有方法)、第三方库内部、常量与配置、框架代码。

二、单元测试 采用 AAA 模式(Arrange、Act、Assert)组织测试结构。测试命名推荐“should [预期行为] when [条件]”格式。文档以 formatCurrency 为例演示纯函数测试,并列出需要考虑的边界情况:空值/null/undefined 输入、边界值(0、-1、MAX_INT)、空数组/对象、无效类型、异步边界情况(竞态条件、超时)。

三、React 组件测试 遵循 Testing Library 理念:“测试越接近软件的使用方式,越能提供信心。”查询优先级从高到低为:getByRole、getByLabelText、getByPlaceholderText、getByText、getByTestId(最后手段)。异步测试使用 userEvent 与 waitFor 等待异步内容。Mock 部分演示了模块、Hook 和 fetch 的模拟方式。

四、集成测试 涵盖 API 路由测试(使用 node-mocks-http 创建请求与响应模拟)和数据库集成测试(beforeEach 清理状态、afterAll 断开连接),验证服务层在真实依赖下的行为。

五、E2E 测试 以 Playwright 为例,演示登录流程测试,并介绍 Page Object 模式封装页面操作,提升可维护性。视觉回归测试通过 toHaveScreenshot 与快照比对实现。

六、Mock 策略 明确何时需要 Mock:外部 API(单元/集成测试中始终 Mock)、数据库(视情况使用测试容器或 Mock)、时间/日期(测试时间相关逻辑时)、随机性(测试确定性输出时)、网络(单元测试中始终 Mock)。文档给出 MSW(Mock Service Worker)的 handlers 示例,用于拦截和模拟 API 请求。

七、测试配置与覆盖率 提供 Vitest 配置示例(jsdom 环境、globals、setupFiles、覆盖率报告),以及测试初始化文件(引入 jest-dom、启动/重置/关闭 MSW server)。覆盖率策略建议:语句 70-80%、分支 70-80%、函数 80%+、行 70-80%,并提醒高覆盖率不等于测试质量好、没有 Bug、代码可维护或边界情况已覆盖。

八、CI 集成 给出 GitHub Actions 工作流示例,在 push 和 pull_request 时运行测试与覆盖率,并上传至 Codecov。

九、相关技能 互补技能包括 tdd-workflow(测试驱动开发工作流)、verification-loop(以测试为质量门禁的迭代验证)、deployment-cicd(在流水线中运行测试)。替代技能为 webapp-testing(专注浏览器自动化的 Web 应用测试)。该技能为基础技能,无前置要求。参考文件包括 vitest-patterns.md、playwright-patterns.md、mock-examples.md。