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 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥15 看一下OPENMV原理图有没有错误
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题