工匠您好,
测试是软件开发的一部分。它确保您的应用程序按预期工作。 Laravel 对测试有很好的支持,并且它在设计时就考虑到了测试。它提供了Pest和PHPUnit用于测试。
安装任何 Laravel 应用程序后,您可以看到 phpunit.xml 已在您的应用程序中可用。默认情况下,应用程序在测试目录中包含两个单独的目录,一个用于功能,另一个用于单元。单元是应用程序中较小且独立的部分,而功能用于测试应用程序的较大部分。
在这篇博文中,我们将探讨如何使用 PHPUnit 编写测试以及如何与您的 Laravel 应用程序集成。
为什么单元测试很重要?
在深入了解细节之前,让我们快速了解为什么单元测试很重要:
代码质量:测试在游戏早期发现错误,从而不会冒进入生产的风险。
重构信心:测试让您充满信心地重构,因为您不担心破坏功能。
文档:测试充当代码行为的活文档。
协作:它们充当团队的安全网:它们不允许新的更改破坏现有功能。
在我们开始编写测试用例之前,请确保您已经安装了 Laravel 应用程序。
开发环境搭建完成:在项目根目录下创建.env.testing文件。当您运行 PHPUnit 测试或使用 --env=testing 选项执行 Artisan 命令时,将使用此文件代替 .env 文件。
验证 PHPUnit 配置:检查项目根目录中的 phpunit.xml 文件。此文件为您的 Laravel 应用程序配置 _PHPUnit_。
运行默认测试: Laravel 包含一些示例测试。您可以使用以下命令运行它们:
php artisan test
此命令执行测试目录中的所有测试。
所以让我们开始编写您的第一个单元测试
功能:用于测试应用程序的较大块,通常涉及 HTTP 请求。
单元: 用于测试各个类和方法。
让我们编写一个简单的单元测试:
1。创建测试文件
使用Artisan生成测试文件:
php artisan make:test SumOfTwoNumberTest --unit
这将创建测试/Unit/SumOfTwoNumberTest.php。
2。编写测试用例
打开新创建的测试文件并添加您的测试逻辑:
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SumOfTwoNumberTest extends TestCase { /** * A basic unit test example. * * @return void */ public function test_addition() { $sum = 2 + 2; $this->assertEquals(4, $sum); } }
3。运行测试
使用以下命令运行测试:
php artisan test
您还可以使用 test Artisan 命令来运行测试。此命令提供详细的测试报告以简化开发和调试过程。
php artisan make:test SumOfTwoNumberTest --unit
您应该看到一个输出,指示测试是通过还是失败。
让我们为 Laravel 模型方法创建一个单元测试。假设我们有一个 User 模型,其方法为 getFullName:
1。模型方法
将方法添加到您的用户模型中:
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SumOfTwoNumberTest extends TestCase { /** * A basic unit test example. * * @return void */ public function test_addition() { $sum = 2 + 2; $this->assertEquals(4, $sum); } }
2。创建测试
生成测试文件:
./vendor/bin/phpunit
编辑测试文件来测试 getFullName 方法:
php artisan test
3。执行测试
运行测试:
public function getFullName(): string { return $this->first_name .' '. $this->last_name; }
如果该方法按预期工作,您应该会看到一条成功消息。
Laravel 中的功能测试允许您测试应用程序的较大部分,例如路由、控制器和中间件。
让我们为登录页面编写一个示例功能测试。
1。生成功能测试
使用 Artisan 创建新功能测试:
php artisan make:test UserTest --unit
这将创建测试/Feature/LoginTest.php。
2。编写测试逻辑
打开LoginTest.php文件并添加以下代码:
<?php namespace Tests\Unit; use App\Models\User; use PHPUnit\Framework\TestCase; class UserTest extends TestCase { public function test_get_full_name() { $user = new User(); $user->first_name = 'John'; $user->last_name = 'Doe'; $this->assertEquals('John Doe', $user->getFullName()); } }
3。运行功能测试
php artisan test
输出将显示登录页面是否可访问以及用户是否可以成功登录。
在 Laravel 中编写单元测试的一些最佳实践
描述性测试名称:测试名称应该能够很好地描述正在测试的内容。
一次测试一件事:每个测试应该只测试一种功能或行为。
使用工厂和播种器:利用 Laravel 的模型工厂和播种器来创建测试数据。
隔离测试:单元测试不应依赖于外部服务,例如数据库或 API。必要时使用模拟和存根。
您可以查看 Laravel 文档以获取更多详细信息。
结论:
Laravel 中的单元和功能测试是维护代码质量和确保健壮的应用程序行为的强大方法。使用 PHPUnit 编写和运行测试是一种简单而有效的方法。通过将测试集成到您的开发过程中,您将创建更可靠、可维护的应用程序。
祝阅读愉快!!
编码快乐!!
❤️ ?
以上是使用 Laravel 单元测试构建无错误的应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!