試圖為我的LoginListener. 顧名思義,它偵聽登錄事件,然后在activity_log表中記錄此事件。
當我嘗試運行測驗時,它會引發以下錯誤:
LoginListener::handle(): Argument #1 ($event) must be of type Illuminate\Auth\Events\Login, string given
我需要知道的是如何正確呼叫登錄事件?
public function testSuccessfulLoginStoresActivity()
{
$event = \Illuminate\Auth\Events\Login::class;
$listener = new LoginListener();
Auth::login($this->user);
$listener->handle($event);
$this->assertDatabaseHas('activity_log', [
'event' => ActivityLogEventType::USER_LOGIN(),
'description' => 'User Login',
'account_id' => $this->practice->account->id,
]);
}
uj5u.com熱心網友回復:
以下設定包含類名的命名空間。不創建事件物件,因為需要傳遞的錯誤狀態。
$event = \Illuminate\Auth\Events\Login::class;
你需要實體化一個登錄事件,第一個引數是守衛,使用你在配置中的那個,第二個引數是用戶,第三個是如果它應該被記住為bool.
use Illuminate\Auth\Events\Login;
$event = new Login('web', $this->user, true);
這將修復您當前的錯誤,并且最有可能在我看到它修復測驗時。
我相信您不需要登錄您的用戶即可進行此測驗。所以洗掉登錄代碼
Auth::login($this->user);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/366158.html
標籤:php 拉拉维尔 单元测试 phpunit laravel 测试
下一篇:Cron的Jest單元測驗
