Laravel单元测试专注单个类或方法逻辑,使用PHPUnit集成,测试文件置于tests/Unit/目录,类名以Test结尾、方法以test_开头,不依赖HTTP请求或数据库,可用Mockery模拟外部依赖。

在 Laravel 中编写单元测试和功能测试,核心是利用内置的 PHPUnit 集成和丰富的测试辅助方法。Laravel 默认已配置好 phpunit.xml,测试文件放在 tests/ 目录下,通过 php artisan test(或 vendor/bin/phpunit)运行。
单元测试:专注单个类或方法逻辑
单元测试验证模型、服务类、帮助函数等不依赖 HTTP 请求或数据库(或使用内存数据库/模拟)的独立逻辑。Laravel 提供 TestCase 基类,但单元测试通常继承更轻量的 \Tests\TestCase 或直接用 PHPUnit\Framework\TestCase。
- 将测试类放在
tests/Unit/目录下,类名以Test结尾(如CalculatorTest.php) - 方法名以
test_开头或用@test注释标记 - 避免使用
$this->get()、$this->actingAs()等 HTTP 相关方法 - 如需隔离外部依赖,用
Mockery模拟(Laravel 自带)或 PHP 的createMock()
示例(测试一个简单的服务类):
// tests/Unit/PriceCalculatorTest.php
<?php
namespace Tests\Unit;
use App\Services\PriceCalculator;
use PHPUnit\Framework\TestCase;
class PriceCalculatorTest extends TestCase
{
public function test_calculates_total_with_tax()
{
$calculator = new PriceCalculator();
$total = $calculator->withTax(100, 0.15);
$this->assertEquals(115, $total);
}
}
登录后复制
功能测试:模拟真实 HTTP 请求与用户交互
功能测试(也称“特性测试”)验证整个请求生命周期:路由 → 控制器 → 视图/响应,常涉及数据库、认证、会话等。Laravel 的 \Tests\TestCase 提供了开箱即用的测试工具链。
立即学习“PHP免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~