kry*_*160 5 php testing automated-tests laravel
Laravel 测试套件有一个名为
$this->assertSoftDeleted()
Run Code Online (Sandbox Code Playgroud)
但有相反的吗?断言某些东西没有被软删除?
我试过了,assertDatabaseHas
但不起作用。
我已经这样做了 $this->assertTrue(! $goal->fresh()->trashed());
工作完美。
但是还有另一种更好、更优雅的方式和 Laravel 的方式吗?
没有被软删除的东西只是意味着该deleted_at
列为空。您可以使用该assertDatabaseHas
列为空的方法:
$this->assertDatabaseHas('goals', [
'id' => $goal->id,
'deleted_at' => null
]);
Run Code Online (Sandbox Code Playgroud)
如果您想让它更加动态,您可以TestCase
使用自定义方法扩展您的基类,该方法将为您执行此操作并允许您使用可读的断言名称保留测试,并另外为您做一些事情,例如找到合适的表/列名称自动:
public function assertModelNotSoftDeleted(Model $model)
{
return $this->assertDatabaseHas($model->getTable(), [
$model->getKeyName() => $model->getKey(),
$model::DELETED_AT => null,
]);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1606 次 |
最近记录: |