PHPUnit Laravel 无法在 ut 中更新

PHPUnit Laravel couldn't update in ut

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

代码如下:

$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 在 Ubuntu 的虚拟机中 运行,在我的 Macbook air 上。 任何人都可以提供帮助,我们将不胜感激。

您应该确保为 TestTaskUser 用户添加了 status 列到 $fillable

protected $fillable = ['status'];

请看mass assignment section

或者您可以更改您的代码:

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

至:

$testTaskUser->status = TestTaskUserStatus::$INITIALIZED;
$testTaskUser->save();

并且在这种情况下您不需要填写 fillable 属性