介绍Laravel unit test : 模拟认证的用户

Laravel unit test : 模拟认证的用户

在 laravel 编写单元测试时经常会遇到需要模拟认证用户的时候,比如新建文章、创建订单等,那么在 laravel unit test 中如何来实现呢?

官方解决方法

Laravel 的官方文档中的测试章节中有提到:

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:

create();        $response = $this->actingAs($user)                         ->withSession(['foo' => 'bar'])                         ->get('/');    }}

其实就是使用 Laravel Testing IlluminateFoundationTestingConcernsImpersonatesUsers Trait 中的 actingAsbe 方法。

设置以后在后续的测试代码中,我们可以通过 auth()->user() 等方法来获取当前认证的用户。

伪造认证用户

在官方的示例中有利用 factory 来创建一个真实的用户,但是更多的时候,我们只想用一个伪造的用户来作为认证用户即可,而不是通过 factory 来创建一个真实的用户。

凹凸工坊-AI手写模拟器 凹凸工坊-AI手写模拟器

AI手写模拟器,一键生成手写文稿

凹凸工坊-AI手写模拟器 359 查看详情 凹凸工坊-AI手写模拟器

在 tests 目录下新建一个 User calss:

use IlluminateFoundationAuthUser as Authenticatable;class User extends Authenticatable{    protected $fillable = [        'id', 'name', 'email', 'password',    ];}

必须在 $fillable 中添加 id attribute . 否则会抛出异常: IlluminateDatabaseEloquentMassAssignmentException: id

接下来伪造一个用户认证用户:

$user = new User([    'id' => 1,    'name' => 'ibrand']); $this->be($user,'api');

后续会继续写一些单元测试小细节的文章,欢迎关注 : )

相关推荐:最新的五个Laravel视频教程

以上就是介绍Laravel unit test : 模拟认证的用户的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/347377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

关于作者

上一篇 2025年11月5日 20:56:52
下一篇 2025年11月5日 20:57:35

相关推荐

发表回复

登录后才能评论
关注微信