[英]Laravel - assert not soft deleted? Inverse? - Laravel Tests
Laravels测试套件具有一个称为的断言
$this->assertSoftDeleted()
但是有逆吗? 断言某些东西没有被软删除?
我已经尝试过assertDatabaseHas
但没有用。
我用这种方式做到了$this->assertTrue(! $goal->fresh()->trashed());
完美的作品。
但是,还有另一种更好的,更优雅的和laravel的方式吗?
没有被软删除的东西只是意味着deleted_at
空。 您可以使用assertDatabaseHas
方法,其中该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,
]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.