ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 単体テストを使用してバグのないアプリケーションを構築する

Laravel 単体テストを使用してバグのないアプリケーションを構築する

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-03 05:43:40437ブラウズ

Build Bug-Free Applications using Laravel Unit Testing

こんにちは、職人さん、

テストはソフトウェア開発の一部です。これにより、アプリケーションが期待どおりに動作することが保証されます。 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 モデルのテスト

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。