PHPUnit-Laravel不能';ut中的t更新

PHPUnit-Laravel不能';ut中的t更新,php,mysql,laravel,eloquent,phpunit,Php,Mysql,Laravel,Eloquent,Phpunit,我在使用phpunit时遇到了一个恼人的问题。 我发现我的数据库没有更新,在一个有说服力的方法被触发后, 所以单元测试的结果总是错误的 代码如下: $testTaskUser = TestTaskUser::find(\SeederConstants::$TEST_TASK_USER_ID); $testTaskUser->update(array( 'status' => TestTaskUserStatus::$INITIALIZED )); $t

我在使用phpunit时遇到了一个恼人的问题。 我发现我的数据库没有更新,在一个有说服力的方法被触发后, 所以单元测试的结果总是错误的

代码如下:

$testTaskUser = TestTaskUser::find(\SeederConstants::$TEST_TASK_USER_ID);
$testTaskUser->update(array(
            'status' => TestTaskUserStatus::$INITIALIZED
    ));
$this->assertEquals($testTaskUser->status,TestTaskUserStatus::$INITIALIZED);
//This assert fails because the 'status' is not updated in the db, which is 
//Very confusing to me
phpserver和mysql在我的MacBookAir上的Ubuntu虚拟机中运行。
任何能帮忙的人都会非常感激

您应该确保为
TestTaskUser
用户将
状态
列添加到
$filleble

protected $fillable = ['status'];
请看

或者,您可以从以下位置更改代码:

$testTaskUser->update(array(
            'status' => TestTaskUserStatus::$INITIALIZED
    ));
致:


在这种情况下,您不需要填写
filleble
property

几乎没有足够的信息来处理。你能
var\u转储($testTaskUser)就在断言之前?您是否确认更新工作正常?模型是否设置为“可填充”状态属性?嗨,克里斯,我发现这是因为模型->更新()对我根本不起作用。如果我更改为$testTaskUser->status=TestTaskUserStatus::$INITIALIZED$testTaskUser->save();这是我更新的正确方式。非常wiredAs提到,您可以使用update,但您需要设置可填充属性Hi Marcin!非常感谢,我确实可以使用->save()进行更新。但奇怪的是,我的队友们可以使用update()进行相同的单元测试。而且我们的模型没有将“状态”设置为可填充……这也很奇怪为什么他们可以,我不能。PS:它们是在Windows中运行的8@user3578004在我看来,这是不可能的,或者您有一些非常自定义的设置,并从配置文件中设置了一些属性。Hi Marcin,我们确实运行相同的代码,但得到不同的结果。这里值得怀疑的是,我们UT的种子将执行雄辩的::unguard();这句话似乎对他们有效,但对我无效。我在这里尝试了自我$testTaskUser::unguard();和$testTaskUser->update,然后就可以了。所以我真的不知道为什么Elount::unguard()在我的根播种机中不起作用。你能给我一个提示吗?
$testTaskUser->status = TestTaskUserStatus::$INITIALIZED;
$testTaskUser->save();