Laravels 测试套件有一个名为
的断言$this->assertSoftDeleted()
但是有相反的吗?断言某些内容不是软删除?
我试过 assertDatabaseHas
但没有用。
我是这样做的 $this->assertTrue(! $goal->fresh()->trashed());
完美运行。
但是还有其他更好、更优雅的 laravel 方式吗?
最佳答案
未被软删除的内容仅意味着 deleted_at
列为空。您可以在该列为空的地方使用 assertDatabaseHas
方法:
$this->assertDatabaseHas('goals', [
'id' => $goal->id,
'deleted_at' => null
]);
如果你想让它更动态一点,你可以用一个自定义方法扩展你的基类 TestCase
,另外还可以为您做一些事情,比如自动找到合适的表/列名:
public function assertModelNotSoftDeleted(Model $model)
{
return $this->assertDatabaseHas($model->getTable(), [
$model->getKeyName() => $model->getKey(),
$model::DELETED_AT => null,
]);
}
关于php - Laravel - 断言不是软删除?逆? - Laravel 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328298/