SuperAPI AI 工具集

javascript-testing-patterns

测试与质量

查看项目

更新于 10-16 07:45

技能介绍

JavaScript Testing Patterns 是一份用于在 JavaScript/TypeScript 应用中落地测试策略的综合指南,目标是通过现代测试框架与最佳实践构建健壮的测试体系。

主要用途与适用时机

该技能适用于以下场景:为新项目搭建测试基础设施;为函数和类编写单元测试;为 API 与服务编写集成测试;为用户流程编写端到端测试;Mock 外部依赖与 API;测试 React、Vue 或其他前端组件;实施测试驱动开发(TDD);在 CI/CD 流程中配置持续测试。

测试框架

资料涉及两个框架。Jest 为全功能测试框架,配置以 jest.config.ts 呈现,包含 ts-jest 预设、testEnvironment 设为 node、roots、testMatch、collectCoverageFrom、coverageThreshold(branches、functions、lines、statements 均设为 80)以及 setupFilesAfterEnv。Vitest 为快速、Vite 原生的测试方案,配置以 vitest.config.ts 呈现,启用 globals、environment 设为 node,覆盖报告 provider 为 v8、reporter 为 text/json/html,并排除 /*.d.ts、/*.config.ts、/dist/,同时指定 setupFiles。

单元测试模式

共给出三种模式。模式一为测试纯函数,以 calculator.ts 中的 add 和 divide 为例,divide 在除数为 0 时抛出 Error('Division by zero'),测试覆盖正数相加、负数相加、零值处理、正常除法、小数结果以及除零抛错。模式二为测试类,以 UserService 为例,包含 create(重复 id 抛 Error('User already exists'))、findById、update(不存在抛 Error('User not found'))、delete,测试通过 beforeEach 重建实例并验证创建、重复创建报错、更新字段与更新不存在报错。模式三为测试异步函数,以 ApiService 的 fetchUser 与 createUser 为例,通过 vi.fn() 全局 Mock fetch,验证成功获取用户、请求 URL、失败抛错,以及创建用户的 POST 请求体校验。

Mock 模式

共三种。模式一为模块 Mock,以基于 nodemailer 的 EmailService 为例,使用 vi.mock 模拟 nodemailer 及其 createTransport 返回的 sendMail,验证收件人与主题。模式二为依赖注入,定义 IUserRepository 接口(findById、create),UserService 通过构造函数注入仓储,测试中用 vi.fn() 构造 mockRepository,验证找到用户、未找到报错与创建用户。模式三为函数 Spy,通过 vi.spyOn 监视 logger.info,配合 afterEach 的 mockRestore 恢复,验证订单处理过程的日志调用参数与调用次数。

集成测试

给出两类模式。模式一为 API 集成测试,基于 supertest 与 app,使用 beforeAll 建表、afterAll 清理与关闭连接池、beforeEach 截断数据;用例覆盖 POST /api/users 创建用户(201,响应不含 password)、邮箱非法返回 400、邮箱已存在返回 409,GET /api/users/:id 获取用户与 404,以及鉴权:受保护路由未带令牌返回 401、携带有效 token 访问 /api/users/me 返回 200。模式二为数据库集成测试,以基于 pg Pool 的 UserRepository 为例,在 beforeAll 中创建连接池与仓库实例并建表。

限制与缺失信息

资料未提供费用、价格、平台支持范围、实际效果承诺与完整的分步安装命令;原文在数据库集成测试的建表语句处被截断,后续内容暂未提供。