イントロダクション
Laravelはユニットテストも考慮して構築されています。実際、PHPUnitをサポートしており、最初から含まれています。アプリケーションのためにphpunit.xml
ファイルも最初から準備されています。さらにフレームワークはアプリケーションを記述的にテストするために便利なヘルパメソッドも持っています。
デフォルトでアプリケーションのtests
ディレクトリには、2つのディレクトリが存在しています。Feature
とUnit
です。ユニットテストは極小さい、コードの独立した一部をテストします。実際、ほとんどのユニット(Unit)テストは一つのメソッドに焦点をあてます。機能(Feature)テストは、多くのオブジェクトがそれぞれどのように関しているかとか、JSONエンドポイントへ完全なHTTPリクエストを送ることさえ含む、コードの幅広い範囲をテストします。
Feature
とUnit
、両テストディレクトリには、ExampleTest.php
が用意されています。真新しいLaravelアプリケーションをインストールしたらテストを実行するため、コマンドラインからvendor/bin/phpunit
を実行してください。
環境
phpunit.xml
ファイル中で環境変数が設定されているため、vendor/bin/phpunit
を実行するとLaravelは自動的に設定環境をtesting
にセットします。Laravelはまた、セッションとキャッシュの設定をarray
ドライバーに設定し、テスト中のセッションやキャッシュデータが残らないようにします。
必要であれば他のテスト設定環境を自由に作成することもできます。testing
動作環境変数はphpunit.xml
の中で設定されています。テスト実行前には、config:clear
Artisanコマンドを実行し、設定キャッシュをクリアするのを忘れないでください。
さらに、プロジェクトのルートディレクトリで、.env.testing
ファイルを生成することも可能です。PHPUnitテストやArtisanコマンドを--env=testing
オプション付きで実行する場合、.env
ファイルをこのファイルの内容でオーバーライドします。
テストの生成と実行
新しいテストケースを作成するには、make:test
Artisanコマンドを使います。
// Featureディレクトリにテストを生成する
php artisan make:test UserTest
// Unitディレクトリにテストを生成する
php artisan make:test UserTest --unit
Tip!! stubのリソース公開 を使って、Testスタブをカスタマイズできます。
テストを生成したら、PHPUnitを使用するときと同じようにテストメソッドを定義してください。テストを実行するには、ターミナルでphpunit
かartisan test
コマンドを実行します。
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
/**
* 基本的なテスト例
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
Note: テストクラスに独自の
setUp
メソッドを定義する場合は、親のクラスのparent::setUp()
/parent::tearDown()
を確実に呼び出してください。
Artisanテストランナー
テスト実行にはphpunit
コマンドに加え、test
Artisanコマンドも使用できます。Artisanテストランナーは現在実行中のテストに関するより詳しい情報を提供し、テストに失敗した最初の時点で自動的に停止します。
php artisan test
phpunit
コマンドで使用できる引数はすべてArtisan
test
コマンドにも渡せます。
php artisan test --group=feature