在codeception.yml中使用参数占位符

mat*_*h88 6 yaml symfony codeception

我正在设置Codeception的Db模块,并希望使用Symfony 2的parameters.yml文件中的参数。

基本上是这样的:

paths:
    tests: tests
    log: tests/_log
    data: tests/_data
    helpers: tests/_helpers
settings:
    bootstrap: _bootstrap.php
    suite_class: \PHPUnit_Framework_TestSuite
    colors: true
    memory_limit: 1024M
    log: true
modules:
    config:
        Symfony2:
            app_path: 'app'
            var_path: 'app'
            environment: 'test'
        Db:
            dsn: "mysql:host='%test_database_host%';dbname='%test_database_name%'"
            user: "%test_database_user%"
            password: "%test_database_password%"
            dump: tests/_data/test_data.sql
Run Code Online (Sandbox Code Playgroud)

占位符(例如%test_database_user%)不会被Symfony 2的app / config目录中的parameters.yml文件中的值替换。

parameters.yml:

parameters:
    test_database_name: testdb
    test_database_host: 127.0.0.1
    test_database_user: root
    test_database_password: thisismypassword
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

谢谢。

Arn*_*rno 3

为了使用 params,您应该将 params 配置添加到 codeception.yml:

params:
    - env # to get params from environment vars
    - params.yml # to get params from yaml (Symfony style)
    - params.env # to get params from .env (Laravel style)
Run Code Online (Sandbox Code Playgroud)

您可以使用 '%' 占位符来使用参数值:

modules:
    enabled:
        - Db:
            dsn: %DB_DSN%
            user: %DB_USER%
            password: %DB_PASS%
Run Code Online (Sandbox Code Playgroud)

这种可能性自此 PR 以来就存在:https ://github.com/Codeception/Codeception/pull/2855

在您的示例中,您可以将参数添加到 codeception.yml 中,如下所示:

params:
    - app/config/parameters.yml
paths:
    tests: tests
    log: tests/_log
    data: tests/_data
    helpers: tests/_helpers
settings:
    bootstrap: _bootstrap.php
    suite_class: \PHPUnit_Framework_TestSuite
    colors: true
    memory_limit: 1024M
    log: true
modules:
    config:
        Symfony2:
            app_path: 'app'
            var_path: 'app'
            environment: 'test'
        Db:
            dsn: "mysql:host='%test_database_host%';dbname='%test_database_name%'"
            user: "%test_database_user%"
            password: "%test_database_password%"
            dump: tests/_data/test_data.sql
Run Code Online (Sandbox Code Playgroud)

请注意,您无法访问%kernel.project_dir%等参数