谁能解释为什么我们不应该通过authorize
或Auth::user()
助手与{文档中建议的{1}}方法?
https://laravel.com/docs/5.8/validation#authorizing-form-requests
就我而言,我正在尝试对表单请求进行单元测试,auth()->user()
允许我检索用户,而$this->user()
却没有,因为我没有提出完整的请求。我只是为测试创建表单请求对象。
auth()->user()
答案 0 :(得分:0)
ActingAs()
正在调用Laravel Auth系统,该系统在请求生命周期中放入请求(See)中。由于您只是在没有此生命周期的情况下调用请求,因此您将永远不会注入任何请求。
为使代码正常工作,您需要设置UserResolver。可以这样做。
$this->subject->setUserResolver(function () use($user) {
return $user;
});
为了易于使用,我强烈建议您进行Laravel功能测试,而不要进行单元测试。您将通过许多方法来斗争,没有Laravel生命周期就不会被称为。您将在应用程序上执行call()和json()。