Symfony2在测试时使用第二个数据库

时间:2017-03-22 16:06:14

标签: mysql symfony behat

我在我的symfony2应用程序中使用behat进行测试。现在我需要有两个数据库。第一个(现在正在工作),正常使用,就像用户在现场做某事一样。第二个数据库(存在并在其上工作),用于测试目的。

我现在得到的是两个工作数据库,并且behat。 Behat使用第二个数据库,但问题是当测试流程时,站点不使用它。

我的config.yml

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8

我的config_test.yml

doctrine:
    dbal:
        dbname:   "%database_name%_test"

我的'behat.yml':

default:
suites:
    default:
        paths:
            features: '%paths.base%/features'
            bootstrap:  '%paths.base%/features/bootstrap'
        contexts:
            - FeatureContext: ~
            - EwidencjaContext:
                userManager: '@fos_user.user_manager'
                em: '@doctrine.orm.entity_manager'
                packageManager: '@em.package_manager'
extensions:
    Behat\Symfony2Extension: ~
    Behat\MinkExtension:
        base_url:  http://my_nginx/app_test.php
        goutte: ~
        selenium2:
            browser: "chrome"
            wd_host: http://selenium_chrome:4444/wd/hub
            capabilities: { "browserName": "chrome", "browser": "chrome"}
    Bex\Behat\ScreenshotExtension:
        image_drivers:
            local:
                screenshot_directory: tests/features/images/
                clear_screenshot_directory: true

如何更改数据库以进行时间测试?

1 个答案:

答案 0 :(得分:1)

这使用SQLite for Behat(测试)环境,但如果你愿意,可以使用MySQL。

<强> config_test.yml

doctrine:
    dbal:
        connections:
            default:
                driver: pdo_sqlite
                path: %kernel.cache_dir%/default.db
                charset: UTF8

<强> app_test.php

相关行应为:$kernel = new AppKernel('test', true);

<强> AppKernel.php

相关行应为:if (in_array($this->getEnvironment(), ['dev', 'test'])) {

<强> behat.yml

注意app_test.php

default:
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url: http://your_app_domain.dev/app_test.php
        ...
        ...
        ...

虚拟主机设置:

<VirtualHost *:80>
   ServerName your_app_domain.dev
   DocumentRoot "/path/to/your/app/web"

   <Directory "/path/to/your/app/web">
       Options Indexes FollowSymlinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>

   ErrorLog ${APACHE_LOG_DIR}/your_app_domain.dev.error.log
   CustomLog ${APACHE_LOG_DIR}/your_app_domain.dev.access.log combined
</VirtualHost>

一些信息:

<强>结果:

如果您拨打http://your_app_domain.dev/app_dev.php,它将在配置中使用默认数据库设置,但如果您拨打http://your_app_domain.dev/app_test.php,则会使用config_test设置。