用途:审查 Elixir 的 ExUnit 测试代码,检查测试模式、使用 Mox 做边界模拟,以及测试适配器用法;适用于审查 _test.exs 文件或测试辅助模块。主要能力:覆盖异步测试、setup、describe、标签等 ExUnit 模式;行为式模拟与期望值;Bypass、Swoosh、Oban 测试;以及该模拟什么、Ecto sandbox 等集成测试要点。模拟边界哲学:只在外部边界模拟,如 HTTP 客户端、外部 API、第三方服务、文件系统、邮件、任务队列等慢资源,以及 DateTime.utc_now()、:rand 等非确定性来源;不要模拟内部代码,如 contexts、schemas、GenServer、内部模块、PubSub 及自己写的代码。审查清单:测试结构上,除非共享数据库状态否则应为 async: true,用 describe 分组、setup 提取公共数据、保持 arrange/act/assert 结构;模拟上,Mox 用于外部边界、为可模拟接口定义 behaviour、不模拟内部模块、在 setup 中使用 verify_on_exit! 进行严格模拟;适配器上,Bypass 用于 HTTP 端点模拟、Swoosh.TestAdapter 用于邮件测试、Oban.Testing 用于后台任务断言;数据库上,用 Ecto.Adapters.SQL.Sandbox 隔离、异步测试不共享数据库状态、一致使用 fixtures/factories。不应标记的模式:单元测试模拟而集成测试用真实实现、集成测试不模拟数据库、简单内联测试数据、通过公共 API 测试私有函数。上下文敏感规则要求仅在测试确实需要共享状态、存在外部调用且无模拟、被模拟模块确为内部代码时才标记。查找项须按顺序通过门控:先从文件取得 [FILE:LINE] 证据,再检查本技能的误报否决项,最后应用 review-verification-protocol 交叉验证;提交时使用 [FILE:LINE] ISSUE_TITLE 格式。限制:资料未提供安装命令、平台与收费信息。
exunit-code-review
测试与质量
更新于 10-15 21:39