ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 単体テストを使用してバグのないアプリケーションを構築する
こんにちは、職人さん、
テストはソフトウェア開発の一部です。これにより、アプリケーションが期待どおりに動作することが保証されます。 Laravel はテストを適切にサポートしており、テストを念頭に置いて設計されています。テスト用に Pest と PHPUnit を提供します。
laravel アプリケーションをインストールすると、phpunit.xml がアプリケーションですでに利用可能になっていることがわかります。デフォルトでは、アプリケーションのテスト ディレクトリには 2 つの別々のディレクトリが含まれています。1 つは機能用で、もう 1 つはユニット用です。ユニットはアプリケーションのより小さく独立した部分ですが、フィーチャーはアプリケーションの大部分をテストするために使用されます。
このブログ投稿では、PHPUnit を使用してテストを作成する方法と、laravel アプリケーションと統合する方法について説明します。
単体テストが重要な理由
詳細に入る前に、単体テストがなぜ重要なのかを簡単に理解してみましょう。
コードの品質: テストはゲームの早い段階でバグを検出するため、本番環境に入る危険を冒しません。
リファクタリングの信頼性: テストを使用すると、機能を壊すことを恐れないため、自信を持ってリファクタリングできます。
ドキュメント: テストは、コードの動作に関する生きたドキュメントとして機能します。
コラボレーション: チームのセーフティ ネットとして機能します。新しい変更により既存の機能が中断されることは許可されません。
テストケースの作成を開始する前に、Laravel アプリケーションがインストールされていることを確認してください。
開発環境がセットアップされました: プロジェクトのルート ディレクトリに .env.testing ファイルを作成します。このファイルは、PHPUnit テストを実行するとき、または --env=testing オプションを指定して Artisan コマンドを実行するときに、.env ファイルの代わりに使用されます。
PHPUnit 構成の確認: プロジェクト ルートにある phpunit.xml ファイルを確認します。このファイルは、Laravel アプリケーションの _PHPUnit_ を構成します。
デフォルトのテストを実行します: Laravel にはいくつかのテスト例が含まれています。以下を使用して実行できます:
php artisan test
このコマンドは、tests ディレクトリ内のすべてのテストを実行します。
それでは、最初の単体テストを書き始めましょう
機能: 多くの場合 HTTP リクエストを含む、アプリケーションのより大きな部分をテストします。
ユニット: 個々のクラスとメソッドをテストするため。
簡単な単体テストを書いてみましょう:
1.テストファイルを作成します
Artisan を使用してテスト ファイルを生成します:
php artisan make:test SumOfTwoNumberTest --unit
これにより、tests/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 モデルのメソッドの単体テストを作成してみましょう。 getFullName:
メソッドを持つ User モデルがあると仮定します。1.モデルメソッド
User モデルにメソッドを追加します:
<?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
これにより、tests/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 で単体テストを作成するためのいくつかのベストプラクティス
説明的なテスト名: テストの名前は、テストの対象をよく説明するものである必要があります。
一度に 1 つのことをテストします: すべてのテストでは、1 つの機能または動作のみをテストする必要があります。
ファクトリーとシーダーを使用する: Laravel のモデルファクトリーとシーダーを使用してテストデータを作成します。
テストの分離: 単体テストはデータベースや API などの外部サービスに依存すべきではありません。必要に応じてモックとスタブを使用します。
詳細については、Laravel ドキュメントを確認してください。
結論:
Laravel での単体テストと機能テストは、コードの品質を維持し、アプリケーションの堅牢な動作を保証する強力な方法です。 PHPUnit を使用すると、テストの作成と実行が簡単で効率的な方法になります。テストを開発プロセスに統合することで、より信頼性が高く保守しやすいアプリケーションを作成できます。
読んでみてください!!
コーディングを楽しんでください!!
❤️ ?
以上がLaravel 単体テストを使用してバグのないアプリケーションを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。