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() 方法中,以便它在每次测试之前运行。