概要
ログインしていない場合に401
ステータスが返ってくることをテストすると以下のエラーが発生したので対応法を紹介する
エラーログ
Illuminate\Auth\AuthenticationException : Unauthenticated.
テストコード
UserControllerTest.php
<?php
class PartnerControllerTest extends TestCase
{
use RefreshDatabase;
public const INDEX_PATH = 'admin/users';
protected function setUp(): void
{
parent::setUp();
// POST時に419エラーが発生するのでCSRFミドルウェアを無効にする
$this->withoutMiddleware([VerifyCsrfToken::class]);
// 詳細エラー取得
$this->withoutExceptionHandling();
// テストデータを作成
$this->authUser = factory(User::class)->create();
}
public function test_NG_ログインしていない場合はアクセスできない()
{
$response = $this->get(self::INDEX_PATH);
$response->assertStatus(401);
}
}
対応方法
以下を追加する
$this->expectException(AuthenticationException::class);
UserControllerTest.php
<?php
class PartnerControllerTest extends TestCase
{
use RefreshDatabase;
public const INDEX_PATH = 'admin/users';
protected function setUp(): void
{
parent::setUp();
// POST時に419エラーが発生するのでCSRFミドルウェアを無効にする
$this->withoutMiddleware([VerifyCsrfToken::class]);
// 詳細エラー取得
$this->withoutExceptionHandling();
// テストデータを作成
$this->authUser = factory(User::class)->create();
}
public function test_NG_ログインしていない場合はアクセスできない()
{
$this->expectException(AuthenticationException::class);
$response = $this->get(self::INDEX_PATH);
$response->assertStatus(401);
}
}