Codeception / Codeception/module-db

Make optional the auto-erase of the records, added by `haveInDatabase()`

未关闭
#68 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
PHP
星标
23
派生
31
PR 合并指标
30 天内没有已合并 PR

描述

#### Problem
Currently, all records, added by `haveInDatabase()` method during test, are automatically removed after the end of the test.
Although this is a documented behaviour, for me it adds more confusion than profit.

In case when I need all the changes, made during test, to disappear after the test, I can't rely solely on this behaviour, because changes may be done not only by `haveInDatabase()`. So I still need to use other things for keeping tests isolated (wrapping tests in transactions, or to re-populate database from dump before each test, etc).

And in other case, when I do not need tests isolation, I am ok with the fact that each test changes something in database, so auto-erasing some records only adds confusion for me.

So, I'd like to be able to turn this behaviour off in my tests.

Currently we have a `skip_cleanup_if_failed` configuration parameter, but it does not give full control over the auto-erase, because allows to omit it only when tests fail (which should be the default behaviour, IMHO). Also, its name is confusing (see [issue #67](https://github.com/Codeception/module-db/issues/67)).

#### Proposed solution
Let's add another boolean configuration parameter, responsible for this auto-erase. For example, `auto_erase`, or `cleanup` (could be used after renaming current `cleanup` to `repopulate` - see [issue #67](https://github.com/Codeception/module-db/issues/67))

贡献指南

这个仓库没有索引到贡献指南

调研方向

首先定位 haveInDatabase() 的实现以及 skip_cleanup_if_failed 的配置处理逻辑。跟踪测试后记录自动删除的位置,然后确认所选的布尔设置可以禁用该行为,同时保留现有的默认设置和失败时的清理行为。

由索引模型根据 Issue 内容生成。

评估

技术栈
php
领域
database, testing
Issue 类型
功能
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。