Laravelでコマンド(artisan)のテストを行う方法を初心者向けにやさしく解説
生徒
「Laravelのartisanコマンドって、テストすることもできるんですか?」
先生
「できますよ。画面操作だけでなく、コマンドの動きもテストできます。」
生徒
「コマンドって黒い画面で動かすやつですよね?それも確認できるんですか?」
先生
「はい。文字の表示や処理結果まで、しっかりチェックできます。」
1. artisanコマンドとは何か
Laravelには、artisanと呼ばれるコマンド操作の仕組みがあります。これは、黒い画面に文字を打ち込んで、プログラムに指示を出す方法です。たとえば、ファイルを作ったり、データを整理したりといった作業を一気に実行できます。例えるなら、家電のリモコンのような存在で、決まったボタンを押すと決まった動きをしてくれます。
2. artisanコマンドもテストが必要な理由
コマンドは人の目に見えにくいため、失敗に気づきにくい部分です。しかし、定期的に動かす処理や大切なデータを扱う場合、間違いがあると大きな問題になります。そこでテストを行い、正しいメッセージが表示されるか、処理が最後まで実行されるかを確認します。これは、機械を動かす前に試運転をするのと同じ考え方です。
3. Laravelでコマンドテストを行う基本方法
Laravelでは、テストの中からartisanコマンドを実行できます。特別な準備はほとんど必要なく、テスト用のメソッドを使うだけです。まずは、コマンドが問題なく実行できるかを確認します。下の例では、sample:helloというコマンドを実行しています。
public function test_artisan_command_runs()
{
$this->artisan('sample:hello')
->assertExitCode(0);
}
4. コマンドの表示メッセージをテストする
artisanコマンドは、実行すると文字を表示することが多いです。その表示内容が正しいかどうかもテストできます。これは、レシートに正しい金額が印字されているかを確認するようなものです。決まった文章が出ているかを見ることで、安心して使えるようになります。
public function test_artisan_command_output()
{
$this->artisan('sample:hello')
->expectsOutput('こんにちは')
->assertExitCode(0);
}
5. コマンドに引数を渡してテストする
artisanコマンドには、追加の情報を渡せる場合があります。これを引数と呼びます。たとえば、名前を指定してあいさつを変えるような仕組みです。テストでは、その引数が正しく使われているかを確認できます。これは、注文内容を変えても正しい料理が出てくるかを確かめる作業に似ています。
public function test_artisan_command_with_argument()
{
$this->artisan('sample:greet', ['name' => '太郎'])
->expectsOutput('こんにちは、太郎さん')
->assertExitCode(0);
}
6. 確認質問があるコマンドのテスト
artisanコマンドの中には、「本当に実行しますか?」と聞いてくるものがあります。これを確認質問と呼びます。テストでは、自動で「はい」と答えた場合の動きを確認できます。人がボタンを押さなくても、正しく進むかを確認できる点が特徴です。
public function test_artisan_command_with_confirmation()
{
$this->artisan('sample:confirm')
->expectsConfirmation('実行しますか?', 'yes')
->assertExitCode(0);
}
7. コマンド実行後の状態を確認する
コマンドは、表示だけでなくデータの変更を行うこともあります。そのため、実行後の状態を確認することも大切です。たとえば、データが追加されたかどうかを見ることで、処理が成功したかを判断します。これは、掃除が終わったあとに部屋が本当にきれいになっているかを見るのと同じです。
public function test_artisan_command_database_change()
{
$this->artisan('sample:create-user');
$this->assertDatabaseHas('users', [
'name' => 'テストユーザー',
]);
}
8. 初心者が意識したいartisanテストのポイント
artisanコマンドのテストは、難しく見えても基本は同じです。実行できるか、正しい表示が出るか、結果が正しいかを順番に確認します。目に見えない処理ほど、テストで支えることが大切です。コマンドを安心して使えるようになると、Laravelでの作業がぐっと楽になります。