Php Laravel-断言未软删除?逆?-拉威尔试验
Laravels测试套件有一个断言,名为Php Laravel-断言未软删除?逆?-拉威尔试验,php,laravel,testing,automated-tests,Php,Laravel,Testing,Automated Tests,Laravels测试套件有一个断言,名为 $this->assertSoftDeleted() 但有相反的情况吗?断言某些内容不是软删除的 我尝试了assertDatabaseHas,但不起作用 我是这样做的$this->assertTrue(!$goal->fresh()->trashed()) 工作完美 但是还有另一种更好、更优雅的方式吗?一些不被软删除的东西只意味着列中的已删除\u为空。如果该列为空,则可以使用assertDatabaseHas方法: $this->asser
$this->assertSoftDeleted()
但有相反的情况吗?断言某些内容不是软删除的
我尝试了assertDatabaseHas
,但不起作用
我是这样做的$this->assertTrue(!$goal->fresh()->trashed())代码>
工作完美
但是还有另一种更好、更优雅的方式吗?一些不被软删除的东西只意味着列中的已删除\u为空。如果该列为空,则可以使用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,
]);
}
如果您查看SoftDeletes.php(处理所有softdelete相关功能的php特性),您会发现没有trashed()的相反形式。您可以在使用软件的模型上创建自己的方法。