test-case
当用户需要编写一个单元测试时,触发该 skill,编写单元测试。
DeepseekModel
官方收录技能
质量 优秀 · 90
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=labring-fastgpt-agents-skills-system-test-case-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name test-case description 当用户需要编写一个单元测试时,触发该 skill,编写单元测试。 When to Use This Skill 用户需要编写一个单元测试时,触发该 skill,编写单元测试。 测试文件位置 packages 测试 packages 里的测试,写在 FastGPT/packages/xxx/test 目录下,子路径对应 packages 的目录结构。例如: packages/global/common/error/s3.ts 文件,对应的测例文件路径为 packages/test/global/common/error/s3.test.ts 。 并且,可以通过 @fastgpt 来导入 packages 里的文件。 例如: import { s3 } from '@fastgpt/global/common/error/s3' ; projects 测试 projects 里的测试,写在 FastGPT/projects/app/test 目录下,子路径对应 projects 的目录结构。 projects/app/src/pages/api/core/dataset/collection/create.ts 文件,对应的测例文件路径为 projects/app/test/api/core/dataset/collection/create.test.ts 。 测试文件规则 通用规则 每个文件,对应一个测试文件。每个函数对应不同的 describe 块。 需覆盖 100% 行数和分支。 测试文件尽可能不要引入第三方依赖库,使用较为原生的方式进行检查。如果需要引入第三方依赖库,则从对应文件里 export 依赖库给 test 使用。例如: // FastGPT/packages/service/common/geo/index.ts import type { NextApiRequest } from 'next' ; // 同时导出一个依赖给 FastGPT/packages/service/test/common/geo/index.test.ts 使用 export type { NextApiRequest } from 'next' ; 尽量减少函数 mock,如果是系统上原生可运行的函数,则无需 mock,只需要 mock 那些无法本地直接运行的依赖(比如需要远程服务,API 密钥之类的) 对于 type.ts, constants.ts, schema.ts, *.schema.ts 文件,以及静态数据,直接跳过忽略。 根据 vitest.config.mts 文件配置,跳过不需要测试的文件。 Mock.ts 文件里,包含了全局 mock 的内容,在编写测试时,请勿重复 mock。理论上,测试里可以 mock 运行各类 infra。 基础函数文件测试 尽量不要 mock,而是完整的运行其逻辑进行测试。 带 API 请求的函数 mock 对应的 API 请求进行测试。 编写流程 一、任务准备 获取所需要编写的测试文件。 创建任务清单,来逐个完成每个文件的测例编写。 二、测例编写 不同测例文件,可以并行进行编写。 检查对应的 .test.ts 测试文件,如果没有则创建。 思考和分析代码后编写测试样例。 检查 TS 错误,确保无 ts 报错。 完成所有测试文件编写 三、结果验证 调用 pnpm test <file-path> <test-name> 来运行测试并检查覆盖率,确保每个文件的覆盖率达到 90% 以上。 如果测试不通过,则根据错误信息检查代码逻辑或者测试用例。 如需二次修改,则回到”二、测例编写“。 单测包含哪些场景 基础场景 复杂场景 边界值 安全边界情况(死循环、系统崩溃、超大数据等) 异常场景 常用命令 # 运行所有测试 pnpm test # 运行指定测试文件(file-path 填完整文件路径) pnpm test <file-path> # 运行指定测试文件的指定测试 pnpm test <file-path> <test-name>
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |