グローバルフック

前述のとおり、hook を使用すると、テストプロセスを簡略化し、テストの前後に行う可能性がある反復的なタスクを自動化できます。ただし、フックが複数のテストファイルで同じ場合は、「グローバル」フックを定義してコードの重複を回避することをお勧めします。グローバルフックは Pest.php 構成ファイルで定義されます。

たとえば、Feature フォルダー内の各テストの前に一部のデータベース操作を実行する必要がある場合は、Pest.php 構成ファイル内で beforeEach() hook を使用できます。

1pest()->extend(TestCase::class)->beforeEach(function () {
2 // Interact with your database...
3})->group('integration')->in('Feature');

さらに、フォルダーまたはグループに関係なく、テストスイート全体の前後に実行されるグローバルフックを定義できます。

1pest()->beforeEach(function () {
2 // Interact with your database...
3});

実際、フック ドキュメントで説明されているフックはすべて、Pest.php 構成ファイルでも使用できます。

1pest()->extend(TestCase::class)->beforeAll(function () {
2 // Runs before each file...
3})->beforeEach(function () {
4 // Runs before each test...
5})->afterEach(function () {
6 // Runs after each test...
7})->afterAll(function () {
8 // Runs after each file...
9})->group('integration')->in('Feature');

Pest.php 構成ファイルで定義された before* hook は、個々のテストファイルで定義された hook よりも前に実行されます。同様に、Pest.php 構成ファイルで指定された after* hook は、個々のテストファイルで定義された hook の後に実行されます。


テストスイートの設定時には、テスト対象のコードを分離し、特定の条件や動作をシミュレートするために、特定の機能やオブジェクトをモックする必要がある場合があります。これは、Mockery などのモッキングライブラリまたはフレームワークを使用して行うことができます。: モッキング