3

参数.yml:

time_limit:        8

my_ui.yml:

my_ui:
    time_limit: %time_limit%

配置.yml:

imports:
    - { resource: my_ui.yml }

然后我可以通过我的包中的扩展和配置类在我的控制器中访问这个罚款。

我现在如何覆盖time_limit我的测试环境中的?

我尝试my_ui_test.ymlconfig_test.yml文件中加载另一个,但无济于事。

4

3 回答 3

4

想通了:每个主机必须有一个参数文件。但是我需要在一台主机上的每个环境使用不同的参数。

参数.yml:

parameters:
    time_limit: 8

my_ui.yml:

my_ui:
    time_limit: %time_limit%

配置.yml:

imports:
    - { resource: my_ui.yml }

这给了我8环境dev

然后,parameters_test.yml:

parameters:
    time_limit: 0

config_test.yml:

imports:
    - { resource: parameters_test.yml }

这给了我0环境test

于 2013-03-17T14:19:50.953 回答
1

覆盖config_test.yml文件中的任何参数,并确保app_test.php在执行功能测试时向控制器发出请求。如果该控制器不存在,请从app_dev.php更改中复制它

$kernel = new AppKernel('dev', true);

$kernel = new AppKernel('test', true);

例如,我使用 bcrypt 密码编码器,该编码器每次在 1-2 秒内对密码进行编码。这对于测试来说是不可接受的,因此我将成本覆盖到最小值config_test.yml以加快测试速度:

security:
    encoders:
        Elnur\Model\User:
            algorithm: bcrypt
            cost: 4

这种方式在生产中成本会很高14,但在测试中只是4

于 2013-03-17T13:34:57.997 回答
0

我发现最好的方法是设置自己的功能测试环境进行测试。这与您的产品/开发环境完全分开。

您可以在 Johann Schmidts bundles 中学习这种方法的好例子。我为我的项目复制并改编了JMSPaymentCoreBundle中的那个。

另一种方法是在 config_test.yml 文件中包含(并覆盖 prod 和 dev 设置)。此文件应仅由测试客户端加载。

于 2013-03-17T12:52:53.307 回答