1

我正在测试的一条路线使用服务,并且该服务在services.yml.

在生产模式下,一切都按预期工作,但我想$my_arg在运行测试时更改值。

我怎样才能做到这一点?如何在功能测试期间设置 Symfony 5 服务参数的值?

services.yml这是我的配置的摘录:

parameters:
    app.my_param: 'foo'

services:
    ...
    App\Service\MyService:
        arguments:
            $my_arg: '%app.my_param%'
4

1 回答 1

0

如果值依赖于环境,我会使用环境变量来存储它。

您甚至可以设置一个默认值,以防您只需要在特定环境中覆盖它。

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"默认值,如果您没有将环境变量设置为其他任何值。

于 2020-02-23T07:51:36.583 回答