如何在功能测试期间配置 Symfony 5 服务参数?
How to configure Symfony 5 service parameters during functional test?
我的一个被测路由使用了一个服务,这个服务在 services.yml
中设置了一个参数。
在生产模式下,一切都按预期工作,但我想在 运行 测试时更改 $my_arg
的值。
我该怎么做?如何在功能测试期间设置 Symfony 5 服务参数的值?
这是我的 services.yml
配置的摘录:
parameters:
app.my_param: 'foo'
services:
...
App\Service\MyService:
arguments:
$my_arg: '%app.my_param%'
如果值是环境依赖,我会使用环境变量来存储它。
您甚至可以设置一个默认值,以防您只需要在特定环境中覆盖它。
parameters:
env(APP_MY_PARAM): 'foo'
app.my_param: '%env(APP_MY_PARAM)%'
services:
...
App\Service\MyService:
arguments:
$my_arg: '%app.my_param%'
您现在只需设置环境变量 APP_MY_PARAM
即可更改应用程序行为。
完成此测试的最简单方法是创建一个 .env.test
文件:
#.env.test
APP_MY_PARAM=bar
有了这个,$my_arg
将在测试期间设置为 "bar"
,如果不将环境变量设置为其他任何值,则默认设置为 "foo"
。
我的一个被测路由使用了一个服务,这个服务在 services.yml
中设置了一个参数。
在生产模式下,一切都按预期工作,但我想在 运行 测试时更改 $my_arg
的值。
我该怎么做?如何在功能测试期间设置 Symfony 5 服务参数的值?
这是我的 services.yml
配置的摘录:
parameters:
app.my_param: 'foo'
services:
...
App\Service\MyService:
arguments:
$my_arg: '%app.my_param%'
如果值是环境依赖,我会使用环境变量来存储它。
您甚至可以设置一个默认值,以防您只需要在特定环境中覆盖它。
parameters:
env(APP_MY_PARAM): 'foo'
app.my_param: '%env(APP_MY_PARAM)%'
services:
...
App\Service\MyService:
arguments:
$my_arg: '%app.my_param%'
您现在只需设置环境变量 APP_MY_PARAM
即可更改应用程序行为。
完成此测试的最简单方法是创建一个 .env.test
文件:
#.env.test
APP_MY_PARAM=bar
有了这个,$my_arg
将在测试期间设置为 "bar"
,如果不将环境变量设置为其他任何值,则默认设置为 "foo"
。