laravel勉強中のものです。
調べながら初めてテストを書いたのですが、流れとしてこれで良いのか不安なので質問させて頂きます。
私が記載しているコメントアウトは処理の説明(自分の理解)を書いているのですが、あっていますでしょうか?
LoginTest
1<?php 2 3namespace Tests\Feature; 4 5use Illuminate\Foundation\Testing\RefreshDatabase; 6use Illuminate\Foundation\Testing\WithFaker; 7use Tests\TestCase; 8use App\User; 9 10class LoginTest extends TestCase 11{ 12 use RefreshDatabase; 13 14 protected $user; 15 16 public function setUp(): void 17 { 18 parent::setUp(); 19 20 // テストユーザ作成 21 $this->user = factory(User::class)->create(); 22 } 23 /** 24 * A basic feature test example. 25 * 26 * @return void 27 */ 28 public function test_正しいパスワードの場合() 29 { 30 $response = $this->get('/login'); 31 $response->assertStatus(200); 32 33 // ログインする 34 $response = $this->post('/login', ['email' => $this->user->email, 'password' => 'Test1234']); 35 // リダイレクトでページ遷移してくるのでstatusは302 36 $response->assertStatus(302); 37 // リダイレクトで帰ってきた時のパス 38 $response->assertRedirect('/'); 39 // このユーザーがログイン認証されているか 40 $this->assertAuthenticatedAs($this->user); 41 42 } 43 44 public function test_間違ったパスワードの場合() 45 { 46 $response = $this->get('/login'); 47 $response->assertStatus(200); 48 49 // パスワードが正しく無い状態でログイン 50 $response = $this->post('/login', ['email' => $this->user->email, 'password' => 'Test123']); 51 // リダイレクトで戻ってくる。 52 $response->assertStatus(302); 53 // 戻ってきた時はログインページにいる事 54 $response->assertRedirect('/login'); 55 // 失敗しているので認証されていない事 56 $this->assertGuest(); 57 58 } 59 60 public function test_ログアウトが正しくできるか() 61 { 62 // ログイン状態の作成 63 $response = $this->actingAs($this->user); 64 $response = $this->get('/'); 65 $response->assertStatus(200); 66 // ログアウト処理をする 67 $this->post('logout'); 68 // ログアウト出来たら200番が帰ってきているか 69 $response->assertStatus(200); 70 // ログインページにいる事。ここは確認の仕方はこれで大丈夫でしょうか。 71 $response = $this->get('/login'); 72 $response->assertStatus(200); 73 // 認証されていないことを確認 74 $this->assertGuest(); 75 } 76} 77
factories
1<?php 2 3/** @var \Illuminate\Database\Eloquent\Factory $factory */ 4 5use App\User; 6use Faker\Generator as Faker; 7use Illuminate\Support\Str; 8 9/* 10|-------------------------------------------------------------------------- 11| Model Factories 12|-------------------------------------------------------------------------- 13| 14| This directory should contain each of the model factory definitions for 15| your application. Factories provide a convenient way to generate new 16| model instances for testing / seeding your application's database. 17| 18*/ 19 20$factory->define(User::class, function (Faker $faker) { 21 return [ 22 'name' => $faker->name, 23 'email' => $faker->unique()->safeEmail, 24 'email_verified_at' => now(), 25 'password' => bcrypt('Test1234'), 26 'remember_token' => Str::random(10), 27 ]; 28});
以下確認したい点です。
・リダイレクト処理は302、ajaxなどapiリクエストはJsonを付けて書き、statusは200が返ってくる。
・現在そのページにいる事を確認したい場合はget(url)とassertStatus(200)で確認する。(他の確認方法はありますか?)
laravel7.x
あなたの回答
tips
プレビュー