Featureテスト
Featureテストとは
- アプリ全体がユーザーの操作どおりに動くかを確認するテストのこと
例;ユーザーがログインフォームを送信したとき、認証が成功し、データベースにセッションが作 成され、指定のページにリダイレクトされるか。
配置場所
- テストファイルは通常、tests/Feature/ ディレクトリ内に配置される。
主なテストメソッド
| メソッド | 役割 |
|---|---|
| $this->get('/posts') | GETリクエストを送信 |
| $this->post('/posts',$data) | POSTリクエストを送信 |
| $this->actingAs($user) | 指定したユーザーとして認証済みの状態のシュミレート |
| $this->assertStatus(200) | レスポンスのHTTPステータスコードを検証 |
| $this->assertRedirect('/home') | 指定されたURLにリダイレクトされたことを検証する |
| $this->assertDatabaseHas('users', $data) | データベースに指定したデータが存在するか確認する |
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ContactFormTest extends TestCase
{
// テスト後にDBを初期状態に戻す
use RefreshDatabase;
public function test_contact_form_submission_is_successful(): void
{
// 送信するデータ
$formData = [
'name' => 'テスト太郎',
'email' => 'test@example.com',
'message' => 'お問い合わせのメッセージです。',
];
// POSTリクエストをシミュレーション
$response = $this->post('/contact', $formData);
// 成功後にリダイレクトされたか
$response->assertRedirect('/thanks');
// データベースにデータが保存されたか
$this->assertDatabaseHas('contacts', [
'email' => 'test@example.com',
'name' => 'テスト太郎',
]);
}
}