Laravel表单请求-授权中的$ this-> user()与auth()-> user()

时间:2019-11-23 12:56:28

标签: php laravel unit-testing

谁能解释为什么我们不应该通过authorizeAuth::user()助手与{文档中建议的{1}}方法?

https://laravel.com/docs/5.8/validation#authorizing-form-requests

就我而言,我正在尝试对表单请求进行单元测试,auth()->user()允许我检索用户,而$this->user()却没有,因为我没有提出完整的请求。我只是为测试创建表单请求对象。

auth()->user()

1 个答案:

答案 0 :(得分:0)

ActingAs()正在调用Laravel Auth系统,该系统在请求生命周期中放入请求(See)中。由于您只是在没有此生命周期的情况下调用请求,因此您将永远不会注入任何请求。

为使代码正常工作,您需要设置UserResolver。可以这样做。

$this->subject->setUserResolver(function () use($user) {
   return $user;
});

为了易于使用,我强烈建议您进行Laravel功能测试,而不要进行单元测试。您将通过许多方法来斗争,没有Laravel生命周期就不会被称为。您将在应用程序上执行call()和json()。