ホームページ >バックエンド開発 >PHPチュートリアル >PHPUnit と Mockery を単体テストに使用するにはどうすればよいですか?

PHPUnit と Mockery を単体テストに使用するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-05-31 16:10:521271ブラウズ

PHP プロジェクト開発において、単体テストは非常に重要なタスクです。 PHPUnit と Mockery は、2 つの非常に人気のある PHP 単体テスト フレームワークです。PHPUnit は広く使用されている単体テスト ツールであり、Mockery は、オブジェクト モックを作成および管理するための統一された簡潔な API の提供に重点を置いたオブジェクト シミュレーション ツールです。

PHPUnit と Mockery を使用すると、開発者は単体テストを迅速かつ効率的に実行して、コード ベースの正確性と安定性を確認できます。この記事では、単体テストを便利に行うためのPHPUnitとMockeryの使い方を紹介します。

  1. まず、PHPUnit と Mockery をインストールする必要があります。ここでは、Composer を使用してこれら 2 つのツールをすばやくインストールします。 PHPUnit と Mockery を使用するプロジェクト ディレクトリで、次のコマンドを実行します。
composer require --dev phpunit/phpunit mockery/mockery

このコマンドは、単体テストの実行を容易にするために、PHPUnit と Mockery を開発依存関係としてプロジェクトにインストールします。

  1. 次に、PHPUnit を使用してテスト ケースを作成する方法を示します。基本的な算術演算を処理する「Calculator」というクラスを作成しているとします。このクラスにテスト ケースを作成し、加算操作を正しく実行できるかどうかを確認します。

プロジェクト フォルダーに、「CalculatorTest.php」というファイルを作成し、その中に次のコードを記述します。

use PHPUnitFrameworkTestCase;
use MyAppCalculator;

class CalculatorTest extends TestCase
{
    public function testAddition()
    {
        $calculator = new Calculator();
        $result = $calculator->add(2, 2);
        $this->assertEquals(4, $result);
    }
}

このテスト ケースでは、最初に Calculator オブジェクトをインスタンス化します。次に、add() メソッドを使用して加算操作を実行します。最後に、assertEquals() メソッドを使用して、操作の結果が期待した値であるかどうかを検証します。

  1. 次に、Mockery を使用してオブジェクトをシミュレートする方法を見てみましょう。多くの場合、テスト時に実際のオブジェクトを使用するのではなく、テストをより洗練され効率的に行うために、モック オブジェクトを使用してオブジェクトを置き換えます。 Mockery を使用すると、これらのモック オブジェクトを簡単に作成して使用できます。

ユーザー関連のビジネス ロジックを処理するために、「UserService」という名前のクラスを作成しているとします。このクラスは、ユーザー データ ストアにアクセスするために「UserRepository」と呼ばれる別のクラスに依存します。 Mockery を使用してこの依存関係をシミュレートし、UserService がテストで正常に実行されていることを確認できます。

プロジェクト フォルダーに、「UserServiceTest.php」というファイルを作成し、その中に次のコードを記述します。

use PHPUnitFrameworkTestCase;
use MyAppUserService;
use MyAppUserRepository;
use MockeryAdapterPhpunitMockeryPHPUnitIntegration;

class UserServiceTest extends TestCase
{
    use MockeryPHPUnitIntegration;

    public function testCreateUser()
    {
        $repo = Mockery::mock(UserRepository::class);
        $repo->shouldReceive('create')
             ->once()
             ->with(['name' => 'Alice']);

        $service = new UserService($repo);
        $service->createUser('Alice');
    }
}

このテスト ケースでは、「Mockery ::mock()」を使用します。モック UserRepository オブジェクトを作成する関数。次に、「ShouldReceive()」メソッドを通じて、このモック オブジェクトの「create()」メソッドが 1 回呼び出され、「'Alice'」という名前の配列がパラメータとして渡されることが期待されます。最後に、UserService オブジェクトをインスタンス化し、その「createUser()」メソッドを通じてモック オブジェクトの「create()」メソッドを呼び出します。

  1. 最後に、PHPUnit と Mockery でテスト ケースを実行する方法について説明します。上記の 2 つのテスト ケースを作成したと仮定すると、次のコマンドを使用してそれらを実行できます。
./vendor/bin/phpunit

このコマンドは、プロジェクト内のすべてのテスト ケースを自動的に検索して実行します。すべてのテストに合格すると、PHPUnit はこれを確認するメッセージを出力します。

特定のテスト ケースのみを実行する場合は、コマンドの後にテスト ファイルまたはテスト メソッドを指定できます。たとえば、「CalculatorTest.php」の testAddition() メソッドを実行するには、次のコマンドを実行します。

./vendor/bin/phpunit tests/CalculatorTest.php --filter testAddition

これらの簡単な手順で、PHP 単体テストに PHPUnit と Mockery を使用できます。正しく完全なテスト スイートは、PHP プロジェクト コード ベースの品質と安定性を確保し、継続的な改善と継続的な開発を促進するのに役立ちます。

以上がPHPUnit と Mockery を単体テストに使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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