PHP面试题更新 2026-08-03

请说明在 Laravel 中如何利用其内置测试工具进行功能测试,并以一个具体示例描述编写测试用例的完整步骤,包括测试类的创建、常用断言方法以及运行测试的方式。

考察说明

考查对 Laravel 测试功能的基本使用流程和断言机制的理解。

回答思路

  1. 【回答框架 1】Laravel 测试基于 PHPUnit,通常存放在 tests 目录,分为单元测试和功能测试。编写测试用例时,先创建一个继承自 Tests\TestCase 的测试类,该类自动配置应用环境并提供断言辅助方法。
  2. 【回答框架 2】对于功能测试,常使用 get、post 等方法发起 HTTP 请求,然后通过 assertStatus、assertSee、assertJson 等断言来验证响应状态、内容或结构。例如,测试一个用户列表接口,可以调用 get,然后断言状态码为 200 且响应包含特定用户名。
  3. 【回答框架 3】数据库测试常用 RefreshDatabase trait,它会在每次测试后回滚事务,保证测试数据隔离。对于需要认证的测试,可以通过 actingAs 方法模拟登录用户。
  4. 【回答框架 4】编写完测试后,可以通过命令行工具 php artisan test 运行所有测试,或使用 PHPUnit 的 --filter 选项运行指定测试类或方法,以获得测试通过或失败的详细反馈。
  5. 【关键点 1】测试类需继承 Tests\TestCase 并使用 PHPUnit 的注解或约定命名方法。
  6. 【关键点 2】功能测试主要使用 get/post 等请求方法和 assertStatus/assertJson 等断言。
  7. 【关键点 3】RefreshDatabase trait 用于隔离测试数据,actingAs 可模拟认证用户。
  8. 【关键点 4】运行测试使用 php artisan test 或 phpunit --filter。
  9. 【易错点 1】避免在测试中直接操作真实数据库,应使用 RefreshDatabase 或事务,防止数据污染。
  10. 【易错点 2】不要断言过多具体实现细节,优先检查响应状态码和关键内容,减少维护成本。