ホームページ  >  記事  >  PHPフレームワーク  >  Laravel 単体テストの紹介: 認証されたユーザーのシミュレーション

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

藏色散人
藏色散人転載
2021-04-23 16:13:541589ブラウズ

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 を作成します。 <pre class="brush:php;toolbar:false">use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable {     protected $fillable = [         'id', 'name', 'email', 'password',     ]; }</pre>

$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 までご連絡ください。