后端测试编写器Skill backend-test-writer

后端测试编写器是一个AI工具,专门为MERN堆栈(MongoDB, Express, React, Node.js)后端代码自动生成全面、可运行的测试。它能智能分析项目结构,检测测试框架,并根据文件类型(路由、控制器、服务、模型等)生成相应的单元测试或集成测试。该工具强调零配置、智能默认值,确保测试覆盖成功路径、验证错误、认证失败及各种边缘情况,并包含正确的设置和清理逻辑。关键词:后端测试,自动化测试,MERN堆栈,单元测试,集成测试,Jest,Supertest,测试覆盖率,Node.js,Express,MongoDB。

测试 0 次安装 6 次浏览 更新于 3/1/2026

name: backend-test-writer description: 用于为后端代码生成测试(Express路由、MongoDB模型、Node服务) - 分析文件类型,从package.json检测测试框架,生成包含设置/清理和边缘情况覆盖的全面测试

后端测试编写器

为MERN堆栈代码生成全面的后端测试。分析文件类型,检测项目约定,生成实际可运行的测试。

理念: 智能默认值,零配置。从项目中检测一切。

<workflow>

工作流程

复制并跟踪进度:

  • [ ] 阶段0:基础设施检查
  • [ ] 阶段1:分析目标文件
  • [ ] 阶段2:生成测试
  • [ ] 阶段3:报告总结

阶段0:基础设施检查

在生成测试之前,验证设置:

  1. 检查package.json中的测试框架(Jest/Vitest/Mocha)
  2. 如果没有 → 提示:“设置Jest + Supertest?”
  3. 检查mongodb-memory-server(集成测试所需)
  4. 检测测试文件约定(同目录放置 vs __tests__/ vs tests/

停止条件: 没有测试框架且用户拒绝设置。

阶段1:分析目标文件

模式 类型 测试方法
routes/, *.routes.js 路由 集成测试(Supertest + 真实数据库)
controllers/ 控制器 集成测试
services/ 服务 单元测试(模拟依赖)
models/, *.model.js 模型 单元测试(验证测试)
middleware/ 中间件 单元测试(模拟req/res/next)
utils/, helpers/ 工具 单元测试(纯函数)

覆盖: 用户可以指定--unit--integration

阶段2:生成测试

按顺序处理文件并显示进度。用户可以随时停止。

每个测试包括:

  • 为检测到的框架正确导入
  • 设置/清理(数据库连接、清理)
  • 全面覆盖:
    • 成功案例(正常路径)
    • 验证错误(400)
    • 未找到(404)
    • 认证失败(401/403)(如果受保护)
    • 边缘情况(重复、空值、null)

参考: 查看test-patterns.md获取完整代码示例。

阶段3:报告

已生成:X 个测试文件
覆盖率:总计 Y 个测试用例
下一步:运行 `npm test` 进行验证

</workflow>

<quick-reference>

快速参考

文件类型 导入 数据库设置
路由 supertest, mongodb-memory-server 真实(内存中)
服务 jest 模拟
模型 mongoose 模拟
中间件 jest

测试结构模式

describe('[资源] [方法]', () => {
  describe('成功案例', () => {
    it('应该 [预期行为]', async () => {});
  });
  describe('验证错误', () => {
    it('对于 [无效情况] 应该返回400', async () => {});
  });
  describe('边缘情况', () => {
    it('应该处理 [边缘情况]', async () => {});
  });
});

</quick-reference>

<checklists>

检查清单

基础设施(首先检查)

  • [ ] package.json中有测试框架
  • [ ] 定义了测试脚本("test": "jest"
  • [ ] 安装了Supertest(集成测试)
  • [ ] 安装了mongodb-memory-server(数据库测试)

按文件生成

  • [ ] 首先检查现有测试(如果找到则进行差距分析)
  • [ ] 为文件类型正确导入
  • [ ] 包含设置/清理
  • [ ] 测试了正常路径
  • [ ] 测试了错误情况(400, 404, 401)
  • [ ] 测试了边缘情况(特定领域:日期→夏令时/时区,货币→精度等)
  • [ ] 断言中没有秘密信息
  • [ ] 正确处理了Async/await
  • [ ] 为每个测试分配了优先级(P0=关键,P1=重要,P2=锦上添花)
  • [ ] 为复杂输入建议了测试辅助工厂

</checklists>

<common-mistakes>

常见错误

错误 修复
在测试中启动服务器 导入app,让Supertest处理
没有数据库清理 添加带有deleteMany({})afterEach
测试实现 通过HTTP接口测试行为
缺少async/await 等待异步操作
在集成测试中模拟 集成测试使用真实数据库

</common-mistakes>

<guidelines>

指南

  • 不要为无法读取的代码生成测试
  • 不要跳过基础设施检查
  • 不要只生成正常路径测试
  • 不要忘记测试之间的清理

</guidelines>

<references>

参考文件

在实现特定模式时加载:

何时 参考
编写任何测试时 test-patterns.md
设置测试基础设施时 test-setup.md

</references>