繁体   English   中英

Laravel-断言没有被软删除? 逆? -Laravel测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM