開発環境
Laravel Framework 8.38.0
PHP 7.4.16
下記ページを参考にマルチログイン機能を実装しました。
https://s-yqual.com/blog/1934
その上で、下記のテストを実行したところ500エラーが返ってきました。
php
1public function test_login_screen_can_be_rendered() 2 { 3 $response = $this->get('/admin/login'); 4 5 $response->assertStatus(200); 6 }
エラー内容
Expected status code 200 but received 500. Failed asserting that 200 is identical to 500.
ブラウザ上では問題なく動いておりました。
500エラーになっている原因ですが、app/Providers/FortifyServiceProvider.php に追加した multiLoginCustomize() で、リクエストされたURLからFortifyのviewPrefixを書き換えを行っているのですが、この部分で dd(\Request::path())でチェックすると、"/" となります。
そのため、FortifyのviewPrefixを書き換えることができずに意図しないビューが適用されてエラーが起きているという状態です。
コントローラーや app/Http/Middleware/Authenticate.phpで dd(\Request::path())を確認すると、"admin/home"となるので、アクセスしているURLは間違いないようです。
参考にしたページのマルチログイン機能の実装方法はすごくスマートで素晴らしいと思いますし、ブラウザで問題なく動作しているのですが、なぜこのテストが通らないのかが疑問です。
あなたの回答
tips
プレビュー