お疲れ様です。
現在、Laravel6
でテストコードを書いているのですが分からないことがありますのでご教授お願いします。
公式リファレンスやUdemyの動画、または他のサイトのコードを参考にして**「ログイン後に企業一覧ページへ画面遷移する」**というテストを書いているのですが、それがうまく行きません。
該当のコードは下記の通りになります。
php
1 /** 2 * ログイン後に企業一覧ページへ移動 3 */ 4 public function testGoToCompanyListPageAfterLoginTest() 5 { 6 $this->withExceptionHandling(); 7 8 $user = factory(User::class)->create(); 9 10 log::debug($user); //右のコードはデバッグ用のコードです。 11 12 $this->actingAs($user)->get('admin/company')->assertStatus(200); 13 }
テストを実行したところ、ログインに失敗してログインページへリダイレクトされるため302エラーが出てしまいます。
php
11) App\Models\Admin\ExampleTest::testgoToCompanyListPageAfterLoginTest 2Response status code [302] does not match expected 200 status code. 3Failed asserting that false is true. 4 5/Users/○○○○○/Desktop/admin/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:89 6/Users/○○○○○/Desktop/admin/tests/Feature/ExampleTest.php:74
ユーザーが登録されていないのかと思い試しに$userをデバッグしたところ、一応ユーザー自体は登録されています。
php
1[2021-12-03 15:35:08] testing.DEBUG: {"name":"\u4e2d\u6d25\u5ddd \u5e79","email":"hsakamoto@example.net","email_verified_at":"2021-12-03 15:35:08","role":"Nm569QXiVC","updated_at":"2021-12-03 15:35:08","created_at":"2021-12-03 15:35:08","id":1}
ただ、下記のコードだと成功します。
php
1 /** 2 * ログインテスト 3 */ 4 public function testloginTest() 5 { 6 $this->get('admin/login')->assertStatus(200); 7 8 User::create([ 9 'name' => 'admin', 10 'email' => 'admin@○○○○○.co.jp', 11 'password' => bcrypt('○○○○○'), 12 ]); 13 14 $this->post('admin/login', [ 15 'email' => 'admin@○○○○○.co.jp', 16 'password' => '○○○○○', 17 ]) 18 ->assertRedirect('admin/company'); 19 }
色々と試したのですが解決できないため、分かる方いましたらご教授お願いします。
回答2件
あなたの回答
tips
プレビュー