Laravel 中的单元测试:设置当前经过身份验证的用户时出错
Posted
技术标签:
【中文标题】Laravel 中的单元测试:设置当前经过身份验证的用户时出错【英文标题】:Unit Testing in Laravel: Error when setting the Currently Authenticated User 【发布时间】:2014-09-21 20:40:50 【问题描述】:在我的 Laravel 单元测试中,我使用下面的代码设置当前经过身份验证的用户。这正是 Laravel 在他们的网站上记录它的方式。我使用 Laravel 提供的默认 User 模型。
public function testLoggedInUserCanCreateCat()
Route::enableFilters();
$user = new User(array(
'name' => 'john'
));
$this->be($user);
$this->call('GET', '/cats/create');
$this->assertResponseOk();
由于某种原因,当我在 SSH 中运行 phpunit 时,出现以下错误:
1) GlobalTest::testLoggedInUserCanCreateCat
Illuminate\Database\Eloquent\MassAssignmentException: name
有人知道这里出了什么问题吗?我在互联网上搜索了几个小时,但找不到任何帮助..
【问题讨论】:
【参考方案1】:问题出在错误中:
MassAssignmentException: 名称
您正在尝试批量分配变量 name
- 但您的模型不允许这样做。
从此更改您的用户模型:
protected $fillable = [];
到这里:
protected $fillable = ['name'];
你可以read more about mass assignment here.
【讨论】:
以上是关于Laravel 中的单元测试:设置当前经过身份验证的用户时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Vuejs 和 Laravel 获取当前经过身份验证的用户 ID?
Laravel 7 将默认守卫更改为员工,但当前经过身份验证的用户返回 null