doukou1718 2018-05-14 10:37
浏览 104
已采纳

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

Laravels test suite has an assertion called

$this->assertSoftDeleted()

But is there the inverse? To assert that something is not soft deleted?

I've tried assertDatabaseHas but doesn't work.

I have done it this way $this->assertTrue(! $goal->fresh()->trashed());

Works perfect.

But is there another, better, more ---elegant--- and laravel's way?

  • 写回答

1条回答 默认 最新

  • dtpf76658 2018-05-14 10:59
    关注

    Something not being soft deleted just means that the deleted_at column is null. You could use the assertDatabaseHas method where that column is empty:

    $this->assertDatabaseHas('goals', [
        'id' => $goal->id,
        'deleted_at' => null
    ]);
    

    If you wanted to make this a bit more dynamic, you could extend your base TestCase class with a custom method that will do this for you and allow you to keep your tests with a readable assertion name, and additionally do things for you like find the appropriate table/column names automatically:

    public function assertModelNotSoftDeleted(Model $model)
    {
        return $this->assertDatabaseHas($model->getTable(), [
            $model->getKeyName() => $model->getKey(),
            $model::DELETED_AT => null,
        ]);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答