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'];
或者您可以更改您的代码:
$testTaskUser->update(array(
'status' => TestTaskUserStatus::$INITIALIZED
));
至:
$testTaskUser->status = TestTaskUserStatus::$INITIALIZED;
$testTaskUser->save();
并且在这种情况下您不需要填写 fillable
属性
我在使用 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'];
或者您可以更改您的代码:
$testTaskUser->update(array(
'status' => TestTaskUserStatus::$INITIALIZED
));
至:
$testTaskUser->status = TestTaskUserStatus::$INITIALIZED;
$testTaskUser->save();
并且在这种情况下您不需要填写 fillable
属性