Laravelでリダイレクトやフラッシュメッセージをテストする方法を完全解説!初心者向けLaravelテスト入門
生徒
「Laravelで画面が別のページに移動したり、メッセージが表示されたりしますが、ちゃんと動いているか確認できますか?」
先生
「できますよ。Laravelのテスト機能を使えば、リダイレクトやフラッシュメッセージも確認できます。」
生徒
「画面を実際に見なくても分かるんですか?」
先生
「はい。自動で画面の動きを確認するような形でテストできます。」
1. Laravelのリダイレクトとは?
Laravelのリダイレクトとは、ある処理が終わったあとに、別のページへ自動で移動する仕組みです。ログイン後にトップページへ移動する動作などが代表例です。
これは、案内係が「次はこちらです」と別の場所へ誘導してくれるようなイメージです。正しい場所に移動しているかを確認するのが、リダイレクトのテストです。
2. フラッシュメッセージとは何か
フラッシュメッセージとは、画面を移動したあとに一度だけ表示されるメッセージです。「登録が完了しました」などの案内文がよく使われます。
付箋を一度だけ貼って、次の画面で剥がれるようなイメージで覚えると分かりやすいです。
3. リダイレクト処理の基本例
まずは、処理後に別ページへ移動する基本的なコード例です。
return redirect('/home');
このコードは、「処理が終わったら/homeへ移動する」という意味です。この動作が正しいかをテストで確認します。
4. リダイレクトをテストする方法
Laravelのテストでは、移動先のURLが正しいかを確認できます。実際にクリックする必要はありません。
public function test_redirect_to_home()
{
$response = $this->post('/login');
$response->assertRedirect('/home');
}
assertRedirectは、「指定したページへ移動したか」を確認する命令です。目的地にちゃんと到着したかを見るチェックポイントのような役割です。
5. フラッシュメッセージを設定する例
次に、フラッシュメッセージを設定する基本的な例を見てみましょう。
return redirect('/home')->with('message', 'ログインしました');
このコードは、画面移動と同時に「ログインしました」というメッセージを一度だけ保存します。
6. フラッシュメッセージをテストする方法
テストでは、メッセージが正しく保存されているかを確認できます。
public function test_flash_message_exists()
{
$response = $this->post('/login');
$response->assertSessionHas('message', 'ログインしました');
}
assertSessionHasは、「メッセージが保存されているか」を確認する命令です。伝言メモがちゃんと残っているかを見る感覚です。
7. リダイレクトとメッセージを同時にテストする
実際の画面では、リダイレクトとフラッシュメッセージは同時に使われることが多いです。テストでもまとめて確認できます。
public function test_redirect_and_flash()
{
$response = $this->post('/login');
$response->assertRedirect('/home');
$response->assertSessionHas('message');
}
このように書くことで、「正しい画面に移動し、必要なメッセージもある」ことを一度に確認できます。
8. 初心者にとってテストが役立つ理由
Laravelでリダイレクトやフラッシュメッセージをテストすると、画面を何度も操作しなくても動作確認ができます。操作ミスや見落としを防ぎ、安心して修正できるのが大きなメリットです。
特に初心者の方にとっては、「ちゃんと動いている」という確かな確認ができることで、不安を減らしながら学習を進められます。