用途:为 Laravel 项目设计、编写与评审测试,并提供规则文件指导。
一致性优先:先读附近测试,再决定语法与组织方式。项目中重复出现的模式即约定,项目约定优先于本技能;不要因既有测试与本技能冲突就删除或重写,如约 定有缺点应说明并交由用户决定。
测什么:测试可观察行为与应用契约,实现变化但行为不变时测试仍应通过;覆盖每个变更决策和适用的高价值失败模式(分支、校验、计算、授权);通过行为而非重复声明文本;框架行为交由框架测试;每个能发现不同缺陷的测试都保留,重复检测同一缺陷时精简高层测试为一个用例并报告重复。优先写功能测试,仅对不使用框架的逻辑写单元测试;只有功能测试无法覆盖的 JavaScript 行为才写浏览器测试,放在 tests/Browser 并调用 assertNoJavaScriptErrors()。架构测试按其所保护的约定判断,arch() 为整个目录声明规则。使用项目已安装的测试工具,新增依赖、插件或浏览器需先经用户要求。
如何应用:阅读被测代码和同目录测试,识别每个决策;按规则索引选择适用规则文件并阅读;写测试前先向用户报告代码缺陷(如无方法体的方法、无人调用的策略、无校验的写操作);编写测试并运行覆盖变更的最小测试集,测试必须通过;对照 rules/review.md 和所选规则逐项检查,解决所有不一致再完成。
规则索引(多数变更需多个规则文件):finding-features.md 测试框架已有能力;naming.md 文件布局、测试名与分组;assertions.md arrange-act-assert 与断言选择;endpoint-tests.md 端点覆盖、认证、授权、租户隔离、校验与浏览器测试;test-data.md 工厂、测试数据归属与重复输入值;isolation.md 伪造、模拟、外部 HTTP、时间、随机性与数据库;security.md 转义、注入、跨租户访问与权限检查;performance.md 慢速套件的环境与 CI 设置;review.md 评审测试或套件。
本项目使用 Pest,需遵循各规则中相应指引。具体规则文件内容、完整示例与命令暂未提供。