【问题标题】:Laravel 5.1 Eloquent isFillable() discrepancy in unit testsLaravel 5.1 Eloquent isFillable() 单元测试中的差异
【发布时间】:2015-09-12 22:31:41
【问题描述】:

Eloquent 在单元测试中使用模型时忽略可填充设置是否有原因?

在非测试情况下,我得到以下输出,这是正确的,因为模型只允许某些可填充字段:

$m = new Model();
dd($m->isFillable('nonexistent_field')); --> false

但如果我在单元测试中做同样的事情:

$m = new Model();
dd($m->isFillable('nonexistent_field')); --> true

这打破了我所有的测试。如何强制 Eloquent 遵守我为其设置的可填充规则,以便单元测试真正符合实际情况?

【问题讨论】:

  • 尝试把Eloquent::reguard()放在你的测试之前或者你的setUp()中。
  • 修复了它。如果您想要积分,请将其作为官方答案,我会选择它。你知道为什么 Eloquent 在单元测试中不保护它的模型吗?
  • 不知道为什么会这样。

标签: laravel phpunit eloquent codeception


【解决方案1】:

我也遇到了这个问题。显然 Laravel 在单元测试期间解除了模型的保护,因此您必须使用 Eloquent::reguard() 重新保护它们。我会将它放在setUp() 方法中,以便在每次测试之前运行。

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2023-03-08
    • 2015-10-11
    • 2018-03-14
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多