【问题标题】:Codeception seeInDatabase not found未找到代码接收 seeInDatabase
【发布时间】:2020-09-24 09:20:52
【问题描述】:

我正在尝试使用 codeception 为我的 PHP 后端编写测试。有一次我需要测试是否对数据库进行了更改。

我(尝试)按照代码接收教程中的步骤进行操作,但它不起作用。我已经通过 composer 安装了 Db 模块,并在我的 *.suite.yml 和我的 codeception.yml 中添加了配置,它们都不起作用。 AcceptanceTester 类和 FunctionalTester 类都不包含任何与数据库相关的函数。

我发现的每个教程都说“只使用函数”,但没有解释如何获取它们/将它们添加到测试器。 codeception 网站上的教程只是安装模块,没有任何解释使用这些功能,甚至没有说明在哪个套件中。

我还尝试创建一个集成测试,但找不到任何描述如何正确执行它的来源。根据我的理解(来自官方页面),我创建了一个新的 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

【问题讨论】:

    标签: codeception


    【解决方案1】:

    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 很可能被为单元套件生成的类覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多