博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel 单元测试-模拟认证的用户
阅读量:7107 次
发布时间:2019-06-28

本文共 1220 字,大约阅读时间需要 4 分钟。

在 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 Illuminate\Foundation\Testing\Concerns\ImpersonatesUsers Trait 中的 actingAsbe 方法。

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

伪造认证用户

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

在 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

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

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

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

讨论交流

转载地址:http://axvhl.baihongyu.com/

你可能感兴趣的文章
华为设备工作中常用到的nat server配置
查看>>
RabbitMQ学习总结(6)——消息的路由分发机制详解
查看>>
haproxy的stats管理和负载均衡mysql的实例
查看>>
Spring常用注解
查看>>
Java基础学习总结(11)——重载与重写
查看>>
【Python基础 06】运算符
查看>>
Java 使用 Redis
查看>>
worldwind for java 探究之导入文件生成图层
查看>>
添加几张调价单
查看>>
lmis中扩容命令
查看>>
向程序猿大军迈进
查看>>
Centos系统mysql 忘记root用户的密码
查看>>
inux访问控制的流程-tcp_wrappers讲解
查看>>
Spring学习总结(6)——Spring之核心容器bean
查看>>
POJ 2533: Longest Ordered Subsequence
查看>>
DNS域名解析过程 五月的仓颉
查看>>
Comment Mail Notify:适用于Twenty Ten主题的WordPress评论邮件回复代码
查看>>
java程序员学习c++的感觉
查看>>
android中Handler详解
查看>>
如何在腾讯云快速构建一个Wordpress个人站点
查看>>