PHP 開発におけるテスト駆動開発に PHPUnit を使用する
ソフトウェア業界の急速な発展に伴い、ソフトウェア開発プロセスにおいてテスト駆動開発 (TDD) の役割がますます重要になっています。 PHPUnit は、PHP 開発で最も一般的に使用されるテスト フレームワークの 1 つです。これは、開発者が高品質の単体テストを作成し、それを PHP アプリケーションに統合するのに役立つ便利なツールとメソッドのセットを提供します。この記事では、PHP 開発における TDD に PHPUnit を使用する方法を紹介します。
- PHPUnit のインストール
まず、PHPUnit をインストールする必要があります。 PHP で最も人気のあるパッケージ マネージャーの 1 つである Composer を通じてインストールできます。まず、ホーム ディレクトリにcomposer.json ファイルを作成し、次の内容を追加する必要があります。
{
"require-dev": {
"phpunit/phpunit": "^9.5"
}
}
ログイン後にコピー
PHPUnit 9.5 のバージョンはここで指定されており、必要に応じて変更できます。次に、次のコマンドを使用して PHPUnit をインストールします:
$ composer install
ログイン後にコピー
インストールが完了したら、次のコマンドを使用して PHPUnit が正常にインストールされたかどうかを確認できます:
$ ./vendor/bin/phpunit --version
ログイン後にコピー
- テストを書くcase
#PHPUnit をインストールしたら、テスト ケースの作成を開始できます。テスト ケースは、ソース コードのさまざまな部分が期待どおりに機能することを検証するために使用されるテスト単位のセットです。各テスト ケースには、コードを検証するために使用されるテスト ケース内のユニットであるテスト メソッドが少なくとも 1 つ含まれている必要があります。テスト メソッドは通常、PHPUnit によって提供されるアサーション メソッドを使用してテストされます。
次は簡単な例です:
<?php
use PHPUnitFrameworkTestCase;
class MyTest extends TestCase
{
public function testAddition()
{
$this->assertEquals(2, 1+1);
}
}
ログイン後にコピー
この例では、テスト ケースの名前は MyTest で、テスト メソッド testAddition() が含まれています。テスト メソッドは、assertEquals() アサーション メソッドを使用して、1 1 が 2 に等しいかどうかを検証します。 PHPUnit のアサーション メソッドの詳細については、PHPUnit の公式ドキュメントを参照してください。
テスト ケースの実行
テスト ケースを作成した後、テスト ケースを実行して、コードが期待どおりに実行されることを確認する必要があります。テスト ケースは、次のコマンドを使用して実行できます。
$ ./vendor/bin/phpunit MyTest.php
ログイン後にコピー
上記のコマンドでは、MyTest.php がテスト ケース ファイル名です。テスト ケースが実行されると、PHPUnit はファイルを動的にロードし、テスト メソッドを実行します。テストが成功すると緑色のメッセージが表示され、テストが失敗すると赤色のメッセージが表示されます。
モックとスタブの使用
モックとスタブは、PHPUnit のもう 2 つの便利な機能です。これらは、コードが正しいコンテキストで実行されることを保証するために、オブジェクトと関数をモックするために使用されます。
モックは、他のオブジェクトの動作をシミュレートおよびテストするために使用される特別なタイプのオブジェクトです。 PHPUnit では、モックは getMock() メソッドを使用して作成されます。以下はモックの使用例です:
<?php
use PHPUnitFrameworkTestCase;
class UserRepositoryTest extends TestCase
{
public function testGetUserById()
{
$user = new stdClass();
$user->id = 1;
$user->name = 'John';
$repository = $this->getMock('UserRepository');
$repository->expects($this->once())
->method('getUserById')
->with($this->equalTo(1))
->will($this->returnValue($user));
$result = $repository->getUserById(1);
$this->assertSame($user, $result);
}
}
ログイン後にコピー
上記のコードでは、getMock() メソッドを使用して UserRepository のモックを作成します。次に、expects() メソッドを使用してシミュレートするメソッドを指定し、with() メソッドを使用して入力パラメーターを指定します。最後に、will() メソッドを使用してシミュレーション操作の結果を指定します。
スタブはモックに似た別のツールで、関数をシミュレートするために使用されます。 PHPUnit では、スタブ化に次のコードを使用できます。
<?php
use PHPUnitFrameworkTestCase;
class MyTest extends TestCase
{
public function testMyFunction()
{
$stub = $this->getMockBuilder('SomeClass')
->getMock();
$stub->method('myFunction')
->willReturn('foo');
$this->assertSame('foo', $stub->myFunction());
}
}
ログイン後にコピー
この例では、まず getMockBuilder() メソッドを使用して SomeClass のモックを作成します。次に、method() メソッドを使用してシミュレーションする必要がある関数を指定し、willReturn() メソッドを使用してシミュレーション操作の結果を指定します。
結論-
PHPUnit は、PHP 開発者に、コードが期待どおりに実行されることを確認する高品質の単体テストを作成するための信頼できる方法を提供します。この記事では、PHPUnit をテスト駆動開発に使用する方法と、モックとスタブを使用してオブジェクトと関数をモックする方法について説明しました。 PHPUnit をテスト駆動開発に使用する場合は、コードを記述する前に必ずテスト ケースを作成することを忘れないでください。多くの場合、適切に作成されたテスト ケースにより、コードの品質と結果が向上します。
以上がPHP開発におけるテスト駆動開発にPHPUnitを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。