问题描述
我正在尝试使用代码接收为PHP后端编写测试。某一时刻,我需要测试是否对数据库进行了更改。
我(尝试)遵循代码接收教程中的步骤,但无法正常工作。我已经通过composer安装了Db模块,并在我的* .suite.yml和codeception.yml中添加了配置,但它们都不起作用。 AcceptanceTester 类和 FunctionalTester 类都不包含任何与数据库相关的功能。
我发现每个教程都说“只使用功能”,但是没有说明如何获取它们/将它们添加到Tester。密码接收站点上的教程仅安装了该模块,而没有任何解释地使用了这些功能,甚至没有说是哪个套件。
我也尝试创建一个集成测试,但是找不到任何描述如何正确执行该操作的资源。根据我的理解(来自官方页面),我创建了一个新的integration.suite.yml文件(请参见下文),并使用该文件进行了测试。但是测试人员仍然无法识别任何数据库功能。
codeception.yml:
extensions:
enabled:
- Codeception\Extension\RunFailed
- Db:
dsn: 'MysqL:host=localhost;dbname=XXX'
user: 'XXX'
password: 'XXX'
dump: 'tests/_data/dump.sql'
populate: true
cleanup: true
populator: 'MysqL -u $user -h $host $dbname < $dump'
integration.suite.yml
actor: UnitTester
modules:
enabled:
- Asserts
- Db
- \Helper\Unit
解决方法
Db模块不是扩展,因此必须在套件配置的modules
部分中启用。
Db配置可作为Db模块的参数或在套件配置文件或codeception.yml中的modules: config:
部分中提供。
modules:
enabled:
- Db:
dsn: 'mysql:host=localhost;dbname=XXX'
user: 'XXX'
password: 'XXX'
dump: 'tests/_data/dump.sql'
populate: true
cleanup: true
populator: 'mysql -u $user -h $host $dbname < $dump'
要考虑的另一项重要事情是,您必须设置正确且不同的Actor名称。
您的integration.suite.yaml包含actor: UnitTester
,因此很有可能UnitTester.php被为单元套件生成的类所覆盖。