【PHPUnit + Laravel】認証できていない状態をテストするとUnauthenticatedエラーが発生する場合の対策
4605 ワード
概要
ログインしていない場合に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);
}
}
Author And Source
この問題について(【PHPUnit + Laravel】認証できていない状態をテストするとUnauthenticatedエラーが発生する場合の対策), 我々は、より多くの情報をここで見つけました https://qiita.com/naoki-haba/items/d0151855e1b5d86f3505著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .