Laravel - 声明没有软删除?逆? - Laravel测试

时间:2018-05-14 10:37:55

标签: php laravel testing automated-tests

Laravels测试套件有一个名为

的断言
$this->assertSoftDeleted()

但反过来了吗?断言某些东西没有软删除?

我已经尝试了assertDatabaseHas但是没有效果。

我这样做$this->assertTrue(! $goal->fresh()->trashed());

完美无缺。

但是还有另一个,更好,更优雅 - 和laravel的方式吗?

1 个答案:

答案 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,
    ]);
}