テスト: スタートガイド
はじめに
Laravel はテストを意識して構築されています。実際、Pest と PHPUnit を使用したテストのサポートが最初から含まれており、phpunit.xml
ファイルがアプリケーションにすでに設定されています。フレームワークには、アプリケーションを表現的にテストするための便利なヘルパーメソッドも含まれています。
デフォルトでは、アプリケーションの tests
ディレクトリには Feature
と Unit
の2つのディレクトリが含まれています。ユニットテストは、コードの非常に小さな、独立した部分に焦点を当てたテストです。実際、ほとんどのユニットテストはおそらく単一のメソッドに焦点を当てています。"Unit" テストディレクトリ内のテストは Laravel アプリケーションを起動せず、したがってアプリケーションのデータベースや他のフレームワークサービスにアクセスできません。
フィーチャーテストは、複数のオブジェクトがどのように相互作用するか、または JSON エンドポイントへの完全な HTTP リクエストなど、コードの大きな部分をテストすることができます。一般的に、ほとんどのテストはフィーチャーテストであるべきです。この種のテストは、システム全体が意図どおりに機能していることを最も確信できます。
ExampleTest.php
ファイルは、Feature
と Unit
テストディレクトリの両方に提供されています。新しい Laravel アプリケーションをインストールした後は、vendor/bin/pest
、vendor/bin/phpunit
、または php artisan test
コマンドを実行してテストを実行します。
環境
テストを実行する際、Laravel は phpunit.xml
ファイルで定義された環境変数のために自動的に 設定環境 を testing
に設定します。また、Laravel はセッションとキャッシュを array
ドライバに自動的に設定するため、テスト中にセッションやキャッシュデータが永続化されることはありません。
自由に他のテスト環境設定値を定義することができます。testing
環境変数は、アプリケーションの phpunit.xml
ファイルで設定できますが、テストを実行する前に config:clear
Artisan コマンドを使用して設定キャッシュをクリアしてください!
.env.testing
環境ファイル
さらに、プロジェクトのルートに .env.testing
ファイルを作成することができます。このファイルは、Pest や PHPUnit テストを実行するか、--env=testing
オプションを使用して Artisan コマンドを実行する際に .env
ファイルの代わりに使用されます。
テストの作成
新しいテストケースを作成するには、make:test
Artisan コマンドを使用します。デフォルトでは、テストは tests/Feature
ディレクトリに配置されます:
php artisan make:test UserTest
tests/Unit
ディレクトリ内にテストを作成したい場合は、make:test
コマンドを実行する際に --unit
オプションを使用できます:
php artisan make:test UserTest --unit
stub publishing を使用してテストスタブをカスタマイズすることができます。
テストが生成されたら、通常通り Pest または PHPUnit を使用してテストを定義できます。テストを実行するには、ターミナルから vendor/bin/pest
、vendor/bin/phpunit
、または php artisan test
コマンドを実行します:
<?php
test('basic', function () {
expect(true)->toBeTrue();
});
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*/
public function test_basic_test(): void
{
$this->assertTrue(true);
}
}
テストクラス内で独自の setUp
/ tearDown
メソッドを定義する場合は、親クラスの対応する parent::setUp()
/ parent::tearDown()
メソッドを呼び出すようにしてください。通常、自分自身の setUp
メソッドの最初に parent::setUp()
を呼び出し、tearDown
メソッドの最後に parent::tearDown()
を呼び出すべきです。
テストの実行
先に述べたように、テストを書いたら、pest
または phpunit
を使用して実行できます:
./vendor/bin/pest