php - Laravel - 断言不是软删除?逆? - Laravel 测试

标签 php laravel testing automated-tests

Laravels 测试套件有一个名为

的断言
$this->assertSoftDeleted()

但是有相反的吗?断言某些内容不是软删除?

我试过 assertDatabaseHas 但没有用。

我是这样做的 $this->assertTrue(! $goal->fresh()->trashed());

完美运行。

但是还有其他更好、更优雅的 laravel 方式吗?

最佳答案

未被软删除的内容仅意味着 deleted_at 列为空。您可以在该列为空的地方使用 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,
    ]);
}

关于php - Laravel - 断言不是软删除?逆? - Laravel 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328298/

相关文章:

php - 是否有任何内置函数可以在 Joomla 框架中使用的数据库中插入值?

php - Carbon laravel 添加到文件名

php - mysql phpmyadmin 用户输入比较数据库

php - 用于获取编号数组的 native CodeIgniter 函数(PDO 驱动程序)?

Laravel:在 View 中使用 "where"?

php - Laravel:无法访问 Eloquent 关系

r - testthat测试的外部文件放在哪里

javascript - sahi - 动态表

android - 验证 Mockito 中的列表参数列表

php - 按 2 件事对电影进行排序