找不到代码接收seeInDatabase

问题描述

我正在尝试使用代码接收为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被为单元套件生成的类所覆盖。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...