无法使用assertSet测试laravel livewire模型隐藏属性
我有一个简单的LIvewire组件,它由一个表单组成,用于创建一个新用户,而且它可以工作,因为有人要求我在项目已经进入阶段后编写测试 Livewire组件使用无法使用assertSet测试laravel livewire模型隐藏属性,laravel,testing,hidden,laravel-livewire,laravel-models,Laravel,Testing,Hidden,Laravel Livewire,Laravel Models,我有一个简单的LIvewire组件,它由一个表单组成,用于创建一个新用户,而且它可以工作,因为有人要求我在项目已经进入阶段后编写测试 Livewire组件使用新用户实例(不存在,即用户->存在为假)存储插入的数据,然后再将其持久化,用户模型通过受保护的$hidden数组隐藏密码属性 现在,我可以在本地环境中通过表单页面成功地创建新用户,但是当涉及到测试时,它会给我带来错误 测试 错误 我发现了什么 通过表单页面设置我的Component用户实例很好,因为livewire将其识别为模型,因此可以执
新用户
实例(不存在,即用户->存在
为假
)存储插入的数据,然后再将其持久化,用户
模型通过受保护的$hidden
数组隐藏密码属性
现在,我可以在本地环境中通过表单页面成功地创建新用户,但是当涉及到测试时,它会给我带来错误
测试
错误
我发现了什么
通过表单页面设置我的Component用户实例很好,因为livewire将其识别为模型
,因此可以执行类似user->password='password'
,而在使用set()
进行测试时,它会使用access操作符访问其属性,因为它是一个数组,即:user['password]=“密码”
注释掉
$hidden
数组中的密码条目使测试通过。
这将解释属性设置中的差异
结论
由于$hidden
数组用于在其数组/json表示中隐藏模型属性,因此它不应干扰自动测试,而且在使用Livewire自己的方法时,因此在我看来,这看起来像是Livewire错误
帮助
有人遇到过这个错误吗
更新#1
我已经在Livewire github上为此打开了一个页面
Livewire::test(
FormComponent::class,
)
->set('user.name', 'user name')
->set('user.email', 'user@email.com')
->set('user.password', 'password')
->assertSet('user.name', 'user name')
->assertSet('user.email', 'user@email.com')
->assertSet('user.password', 'password');
Failed asserting that null matches expected 'password'.