SuperAPI AI 工具集

testing

测试与质量

查看项目

更新于 10-16 09:47

技能介绍

该技能是 Elixir 测试模式的速查参考,用于编写或修复测试文件与测试 setup。核心约定:默认使用 async: true,除非测试会修改全局状态;所有数据库测试使用 Ecto.Adapters.SQL.Sandbox 隔离;只在边界处做 mock,不 mock 数据库、内部模块或标准库;所有 mock 必须实现已定义的 @callback 行为;工厂默认用 build/2,仅在需要数据库 ID、约束或持久化关联时用 insert/2;避免 Process.sleep,改用 assert_receive 加超时;Mox 测试 setup 中始终调用 verify_on_exit!;工厂定义须包含 schema changeset 中 validate_required 的所有字段。测试用例选择:控制器/API 用 ConnCase,上下文/Schema 用 DataCase,LiveView 用 ConnCase 并 import Phoenix.LiveViewTest,纯逻辑用 ExUnit.Case, async: true。async: true 适用于纯函数与 PostgreSQL 沙箱数据库测试,不适用于修改 Application.put_env 或使用 Mox 全局模式的测试。需要 mock 的有外部 API、邮件服务、文件存储;不应 mock 数据库与内部模块。LiveView 中 assign_async 必须调用 render_async(view)。Ash 项目应使用 DataCase 配合 Ash.Test 辅助函数,通过 domain 代码接口测试 action,而非直接调用 Repo。详细模式见技能目录下 references 中的 exunit-patterns.md、mox-patterns.md、liveview-testing.md、factory-patterns.md。