您好,登錄后才能下訂單哦!
小編給大家分享一下Laravel unit test : 模擬認(rèn)證的用戶是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Laravel 是一套簡潔、優(yōu)雅的PHP Web開發(fā)框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構(gòu)建一個完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡潔、富于表達力。
Laravel unit test : 模擬認(rèn)證的用戶
在 Laravel 編寫單元測試時經(jīng)常會遇到需要模擬認(rèn)證用戶的時候,比如新建文章、創(chuàng)建訂單等,那么在 Laravel unit test 中如何來實現(xiàn)呢?
Laravel 的官方文檔中的測試章節(jié)中有提到:
Of course, one common use of the session is for maintaining state for the authenticated user. The actingAs helper method provides a simple way to authenticate a given user as the current user. For example, we may use a model factory to generate and authenticate a user:
<?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 Testing Illuminate\Foundation\Testing\Concerns\ImpersonatesUsers
Trait 中的 actingAs
和 be
方法。
設(shè)置以后在后續(xù)的測試代碼中,我們可以通過 auth()->user()
等方法來獲取當(dāng)前認(rèn)證的用戶。
在官方的示例中有利用 factory 來創(chuàng)建一個真實的用戶,但是更多的時候,我們只想用一個偽造的用戶來作為認(rèn)證用戶即可,而不是通過 factory 來創(chuàng)建一個真實的用戶。
在 tests 目錄下新建一個 User
calss:
use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { protected $fillable = [ 'id', 'name', 'email', 'password', ]; }
必須在 $fillable
中添加 id
attribute . 否則會拋出異常: Illuminate\Database\Eloquent\MassAssignmentException: id
接下來偽造一個用戶認(rèn)證用戶:
$user = new User([ 'id' => 1, 'name' => 'ibrand' ]); $this->be($user,'api');
以上是“Laravel unit test : 模擬認(rèn)證的用戶是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。