在 codeception acceptance helper 中动态执行 DB dump

Executing DB dump dynamically in codeception acceptance helper

我想为不同的codeception 测试执行不同的转储文件。现在 Db 转储文件正在从 AcceptanceHelper_before 方法中的 shell_exec 命令执行,该命令在每次验收测试之前执行。类似于建议 here。应用程序中有很多测试。所以,流程如下

- tests/acceptance/application/<contains alot of tests related to application>

- tests/acceptance/location/<contains alot of tests related to location>

两个测试目录 /application//location/ 使用相同的 AcceptanceHelper。所以,我想要的是 /application/ 目录中所有测试的不同于 /location/ 测试的可执行转储文件。

想想 Get current running test name。假设 application_dump.sql 用于 /application/ 目录内的所有测试,location_dump.sql 用于 /location/ 目录内的所有测试。

P.S: Using a different suite for application and location is ideally not what i am looking for.

只是为了帮助一些人。由于 Get current running test name 似乎仍在开发中,因此没有合适的方法来实现这一点。

所以,这就是我设法解决问题的方法。我已将 shell_exec 命令移出 AcceptanceHelper_before 方法,并在 AcceptanceHelper 中创建了一个新的 public 方法,可以通过 actor class 访问$I 在每次验收测试中都如此

$I->executeDbDump('application_dump.sql');
$I->executeDbDump('location_dump.sql');

使用这种方法的唯一缺点是我必须在每次测试之前手动执行相应的 executeDbDump 函数。但现在似乎仍然是解决该问题的最佳方法。