用途:这是 Elixir/Phoenix 项目的测试规范技能,声明为所有测试文件的必用项,要求在编写任何 _test.exs 文件前调用。
主要能力与规则:遵循项目既有测试设置,不内联项目已抽象的 DataCase/ConnCase 样板;仅在安全时使用 async: true,涉及共享行数据库上下文、LiveView、Application.put_env 和外部服务时避免;测试数据定义在 test/support/ 的 fixtures 中,不在多个测试里内联构建;LiveView 结构断言用 has_element?/2 和 element/2,而非 html =~ "text";受保护资源必须测试未授权情形;禁止硬编码日期,改用相对时间戳避免不稳定测试。
使用方式:按工作流依次执行——检查 test/support/fixtures/ 中已有 fixture;必要时在对应 fixtures 模块新增;运行 mix test 确认 fixture 可编译;编写失败测试并运行 mix test path/to/file_test.exs 确认失败信息有意义;实现功能;再次运行确认通过。模板方面,DataCase 用于 context 与 schema 测试,ConnCase 用于 LiveView 与控制器测试,另有 isolated-LiveView、ChannelCase 模板;可用 setup [:func1, :func2] 组合可复用 setup 函数。
适用场景:Elixir/Phoenix 的 context、schema、changeset、LiveView、控制器与 Channel 测试。
限制:纯函数单元测试(无数据库或外部副作用)应使用普通 ExUnit;属性测试、基准测试、外部服务的 Mox 模式、LiveView streams 分别由其他技能处理,不应调用本技能。常见问题包括 ownership 超时或 DBConnection.OwnershipError 需设 async: false,LiveView 找不到 ownership 进程需设 async: false,Application.put_env 泄漏需在 on_exit 恢复原值,时间戳断言不稳定改用 DateTime.diff/3。具体安装命令与价格信息暂未提供。