我在使用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在Ubuntu的vm中运行,在我的Macbookair上。任何能帮忙的人都将不胜感激。
您应该确保为TestTaskUser
用户将status
列添加到$fillable
中。
protected $fillable = ['status'];
请查看批量分配部分
或者,您可以从以下位置更改代码:
$testTaskUser->update(array(
'status' => TestTaskUserStatus::$INITIALIZED
));
至:
$testTaskUser->status = TestTaskUserStatus::$INITIALIZED;
$testTaskUser->save();
在这种情况下,您不需要填写fillable
属性