Laravel 5.1 Eloquent 单元测试中的 isFillable() 差异
Laravel 5.1 Eloquent isFillable() discrepancy in unit tests
在单元测试中使用时 Eloquent 忽略模型的可填充设置是否有原因?
在非测试情况下,我得到以下输出,这是正确的,因为模型只允许某些可填写字段:
$m = new Model();
dd($m->isFillable('nonexistent_field')); --> false
但是如果我在单元测试中做同样的事情:
$m = new Model();
dd($m->isFillable('nonexistent_field')); --> true
这破坏了我所有的测试。我如何强制 Eloquent 遵守我为它设置的可填写规则,以便单元测试真正符合现实?
我也 运行 参与其中。显然 Laravel 在单元测试期间取消保护模型,因此您必须使用 Eloquent::reguard()
重新保护它们。我会把它放在 setUp()
方法中,以便它在每次测试之前运行。
在单元测试中使用时 Eloquent 忽略模型的可填充设置是否有原因?
在非测试情况下,我得到以下输出,这是正确的,因为模型只允许某些可填写字段:
$m = new Model();
dd($m->isFillable('nonexistent_field')); --> false
但是如果我在单元测试中做同样的事情:
$m = new Model();
dd($m->isFillable('nonexistent_field')); --> true
这破坏了我所有的测试。我如何强制 Eloquent 遵守我为它设置的可填写规则,以便单元测试真正符合现实?
我也 运行 参与其中。显然 Laravel 在单元测试期间取消保护模型,因此您必须使用 Eloquent::reguard()
重新保护它们。我会把它放在 setUp()
方法中,以便它在每次测试之前运行。