parameters.yml:
time_limit: 8
my_ui.yml:
my_ui:
time_limit: %time_limit%
config.yml:
imports:
- { resource: my_ui.yml }
然后,我可以通过我的捆绑包中的Extension和Configuration类在我的控制器中访问它。
我现在如何覆盖测试环境中的time_limit
?
我已尝试在my_ui_test.yml
文件中加载另一个config_test.yml
,但无济于事。
答案 0 :(得分:4)
想出来:每个主机必须有一个参数文件。但是我需要在一台主机上每个env使用不同的参数。
parameters.yml:
parameters:
time_limit: 8
my_ui.yml:
my_ui:
time_limit: %time_limit%
config.yml:
imports:
- { resource: my_ui.yml }
这会在8
env。
dev
然后,参数_test.yml:
parameters:
time_limit: 0
config_test.yml:
imports:
- { resource: parameters_test.yml }
这会在0
env。
test
答案 1 :(得分: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
进行测试。
答案 2 :(得分:0)
我发现最好的方法是建立自己的功能测试环境进行测试。这与您的产品/开发环境完全分开。
你可以在Johann Schmidts的丛书中学习这种方法的很好的例子。我复制并修改了JMSPaymentCoreBundle中的项目。
另一种方法是在config_test.yml文件中包含(并覆盖prod和dev设置)。该文件只应由测试客户端加载。