Laravels测试套件有一个名为
的断言$this->assertSoftDeleted()
但反过来了吗?断言某些东西没有软删除?
我已经尝试了assertDatabaseHas
但是没有效果。
我这样做$this->assertTrue(! $goal->fresh()->trashed());
完美无缺。
但是还有另一个,更好,更优雅 - 和laravel的方式吗?
答案 0 :(得分:2)
没有被软删除的东西只意味着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,
]);
}