SuperAPI AI 工具集

laravel-tdd

测试与质量

查看项目

更新于 10-15 08:37

技能介绍

用途

本技能用于在 Laravel 应用中实践测试驱动开发(TDD),基于 PHPUnit、Pest、Laravel 模型工厂和测试辅助工具。适合在以下场景启用:编写新的 Laravel 应用或功能;实现使用 Sanctum 或 Passport 认证的 API 端点;测试 Eloquent 模型、关系、作用域和访问器;为 Laravel 项目搭建测试基础设施;为 HTTP 控制器和表单请求编写功能测试;模拟外部服务(队列、邮件、通知、HTTP)。

主要能力

TDD 工作流

采用红-绿-重构循环:

  1. RED:编写一个失败的测试。
  2. GREEN:编写迁移、模型和工厂使其通过。
  3. REFACTOR:在保持测试通过的前提下改进代码。

测试配置

提供 PHPUnit 配置示例,设置 Unit 与 Feature 测试套件,并在 <php> 中配置测试环境变量(APP_ENV、BCRYPT_ROUNDS、CACHE_STORE、DB_CONNECTION、DB_DATABASE、MAIL_MAILER、QUEUE_CONNECTION、SESSION_DRIVER)。同时提供基础 TestCase 设置,包含 actingAsUser() 和 actingAsAdmin() 辅助方法。

模型工厂

展示 UserFactory 与 ProductFactory 的定义方式,包括 admin()、unverified()、outOfStock() 等状态方法,以及工厂的使用方式(create、make、count、has 关系、sequence 序列)。

模型测试

覆盖敏感属性隐藏、作用域过滤、模型关系等测试写法,使用 RefreshDatabase 保证状态干净。

功能 / HTTP 测试

覆盖访客重定向、存储新资源、必填字段验证、越权修改他人资源等场景。

JSON API 测试

覆盖未认证请求拒绝、分页列表、创建资源、越权删除等,使用 assertJsonCount、assertJsonStructure、assertJsonPath 等断言。

Sanctum API 认证测试

覆盖注册、登录、错误密码登录失败、Bearer Token 认证请求等。

模拟与 Fake

提供 Http::fake(成功、失败、超时重试)、Mail::fake、Notification::fake、Queue::fake、Storage::fake、Event::fake 的用法示例。

Artisan 命令测试

使用 $this->artisan() 配合 expectsOutput 和 assertExitCode 测试命令输出与退出码。

授权测试

覆盖用户可更新自己的文章、不可更新他人文章、Gate before 授予超级管理员完全访问等。

Pest 功能测试

展示 Pest 的 uses、beforeEach、it 语法及常见断言。

覆盖率

提供 PHPUnit 与 Pest 的覆盖率命令,并给出各组件覆盖率目标:模型 95%+、Actions/Services 90%+、Form Requests 90%+、控制器 85%+、Policies 95%+、整体 80%+。

使用方式

按技能提供的示例配置 PHPUnit、编写基础 TestCase、定义模型工厂,然后按 TDD 循环编写模型测试、功能测试、API 测试与认证测试,并使用各类 Fake 隔离外部服务。覆盖率命令:

# PHPUnit(使用 clover 输出用于 CI 阈值检查)
vendor/bin/phpunit --coverage-html coverage --coverage-clover clover.xml

# Pest(内置阈值支持)
vendor/bin/pest --coverage --min=80

适用场景

  • 新 Laravel 应用或功能的测试驱动开发
  • 带 Sanctum/Passport 认证的 API 端点测试
  • Eloquent 模型、关系、作用域、访问器测试
  • HTTP 控制器与表单请求的功能测试
  • 队列、邮件、通知、HTTP 等外部服务的模拟
  • Artisan 命令与授权策略测试

限制

资料未提供该技能的安装命令、收费方式、价格、支持平台或具体效果数据,这些信息暂未提供。