Laravel 単体テストの紹介: 認証されたユーザーのシミュレーション

藏色散人
リリース: 2021-04-25 08:53:34
転載
1605 人が閲覧しました

Laravel 単体テスト: 認証されたユーザーをシミュレートします

Laravel で単体テストを作成するとき、新しい記事の作成や注文の作成など、認証されたユーザーをシミュレートする必要がある場合がよくあります。では、これを Laravel 単体テストで実装するにはどうすればよいでしょうか?

公式ソリューション

これは、Laravel の公式ドキュメントのテストの章で言及されています:

もちろん、セッションの一般的な用途の 1 つは、認証されたユーザーの状態を維持することです。 ActingAs ヘルパー メソッドは、指定されたユーザーを現在のユーザーとして認証するための簡単な方法を提供します。たとえば、モデル ファクトリを使用してユーザーを生成および認証できます:

<?php

use App\User;

class ExampleTest extends TestCase
{
    public function testApplication()
    {
        $user = factory(User::class)->create();

        $response = $this->actingAs($user)
                         ->withSession(['foo' => 'bar'])
                         ->get('/');
    }
}
ログイン後にコピー
実際には、Laravel テストを使用して
Illuminate\Foundation\Testing\Concerns\ImpersonatesUsers

トレイトの actingAs メソッドと be メソッド。 設定後、後続のテストコードでは、

auth()->user()

などのメソッドで現在認証されているユーザーを取得できます。 偽の認証済みユーザー

公式の例では、factory を使用して実際のユーザーを作成しますが、多くの場合、認証済みユーザーとして偽のユーザーを使用したいだけです。工場を通じた実際のユーザー。

tests ディレクトリに新しい

User

calss を作成します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable {     protected $fillable = [         'id', 'name', 'email', 'password',     ]; }</pre><div class="contentsignin">ログイン後にコピー</div></div>

$fillable

id 属性を追加する必要があります。それ以外の場合は、例外がスローされます: Illuminate\Database\Eloquent\MassAssignmentException: id次に、ユーザー認証 user を偽造します:

$user = new User([
    'id' => 1,
    'name' => 'ibrand'
]);

 $this->be($user,'api');
ログイン後にコピー

私は、いくつかの小さなコードを書き続けます。単体テストの詳細については、今後の記事をご覧ください。記事、フォロー歓迎:)

関連する推奨事項:
最新の 5 つの Laravel ビデオ チュートリアル

以上がLaravel 単体テストの紹介: 認証されたユーザーのシミュレーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート