テストの記述
このセクションでは、Pestを使ったテストの記述方法の概要を説明します。Pestをインストールした後、プロジェクトには以下のファイルとフォルダがあります。
1├── 📂 tests2│ ├── 📂 Unit3│ │ └── ExampleTest.php4│ └── 📂 Feature5│ │ └── ExampleTest.php6│ └── TestCase.php7│ └── Pest.php8├── phpunit.xml
tests
フォルダは、すべてのテストファイルが配置されるメインディレクトリです。このフォルダ内には、ユニットテストと機能テストをそれぞれ格納する2つのサブフォルダ、Unit
と Feature
があります。TestCase.php
ファイルでは、すべてのテストで使用する共通の機能や設定を定義できます。最後に、Pest.php
ファイルでは、テストスイートを設定できます。
さらに、phpunit.xml
ファイルがプロジェクトのルートにあり、テスト実行時にPHPUnitの様々なオプションを設定するために使用されます。PestはPHPUnit上に構築されているため、PHPUnitが提供するすべてのオプションはPestでも使用できます。したがって、phpunit.xml
ファイルで行うカスタマイズや設定は、Pestテストにも適用されます。
プロジェクトのテストを書き始めるときは、テストファイルの作成と整理方法を検討することが重要です。通常、テストファイルには、ExampleTest.php
のように、Test.php
というサフィックスが付きます。
最初のテスト
最初のテストとして、簡単なものを書いてみましょう。プロジェクトに、2つの数値を加算する sum
というグローバル関数があるとします。この関数をテストするには、Tests\Unit\SumTest.php
ファイルを以下のコードで作成します。
1test('sum', function () {2 $result = sum(1, 2);3 4 expect($result)->toBe(3);5});
テストコードを書いたら、Pestを使ってテストを実行します。 ./vendor/bin/pest
コマンドを実行すると、Pestはテストが成功したか失敗したかを示すメッセージを表示します。

test()
関数の代わりに、Pestはテストの説明に "it" という単語をプレフィックスとして付ける便利な it()
関数を提供しており、テストの可読性を向上させます。
1it('performs sums', function () {2 $result = sum(1, 2);3 4 expect($result)->toBe(3);5});
この場合、./vendor/bin/pest
コマンドを実行すると、出力には "it performs sums" という説明とテスト結果が含まれます.

最後に、describe()
関数を使用して、関連するテストをグループ化することもできます。たとえば、describe()
関数を使用して、sum()
関数に関連するすべてのテストをグループ化できます。
1describe('sum', function () { 2 it('may sum integers', function () { 3 $result = sum(1, 2); 4 5 expect($result)->toBe(3); 6 }); 7 8 it('may sum floats', function () { 9 $result = sum(1.5, 2.5);10 11 expect($result)->toBe(4.0);12 });13});
./vendor/bin/pest
コマンドを実行すると、出力には "sum performs sums" という説明とテスト結果が含まれます。
期待値API
前の例で気づいたかもしれませんが、テストコードではPestの期待値APIを使用してアサーションを実行しました。expect()
関数は期待値APIの中核となる部分であり、特定の条件が満たされていることをアサートするために使用されます。
たとえば、前の例では、expect($result)->toBe(3)
を使用して、$result
の値が 3
に等しいことを確認しました。Pestの期待値APIは、toBeTrue()
、toBeFalse()
、toContain()
など、コードの動作をテストするために使用できる様々なアサーション関数を備えています。
期待値APIを使用することで、コードの動作と期待される動作を明確にする、簡潔で読みやすいアサーションを書くことができます。次のセクションでは、Pestの期待値APIで最もよく使用されるアサーション関数のいくつかについて説明します。
アサーションAPI
Pestの期待値APIはアサーションを実行する便利な方法を提供しますが、利用可能な唯一のオプションではありません。PHPUnitのアサーションAPIを使用することもできます。これは、PHPUnitのアサーションAPIに既に精通している場合や、Pestの期待値APIでは利用できないより複雑なアサーションを実行する必要がある場合に役立ちます。
1test('sum', function () {2 $result = sum(1, 2);3 4 $this->assertSame(3, $result); // Same as expect($result)->toBe(3)5});
PHPUnitのアサーションAPIの完全なドキュメントは、PHPUnitのWebサイトにあります:docs.phpunit.de/en/11.3/assertions.html
期待値APIの使用方法の詳細については、次のセクションに進んでください:期待値 →