如何在Symfony bundle中设置特定于环境的参数?

3
我正在为一个使用服务访问外部API的Symfony2控制器编写单元测试。我已经为单元测试目的创建了这个服务的模拟子类,用于检查控制器是否提供了正确的输入。
服务的配置在{bundle}/Resources/config/parameters.yml中。目前,我正在覆盖app/config/config_test.yml中的服务类参数,以便我的单元测试可以使用模拟服务。
如果可能的话,我想将测试配置放在我的bundle中的某个位置,但是当我在{bundle}/Resources/config中创建config_test.yml时被忽略了。有没有办法让它工作,或者我的环境特定配置必须留在app目录下?
3个回答

1
我建议在捆绑包中使用自己的加载器。根据环境加载不同的yml文件。

0

对于任何想要设置不同环境的人,这里是来自文档的解决方案。

基本上,您需要添加一个带有test参数设置为true或任何其他非false值的framework键:

imports:
    - { resource: config_dev.yml }

framework:
    test: ~
    session:
        storage_id: session.storage.filesystem

-1

你的问题不太合理,因为你谈论单元测试和读取一些配置,这本身就是矛盾的。

如果你真的在进行单元测试——也就是说,在所有依赖项都被存根或模拟的情况下仅测试一个类——那么你不应该访问任何配置。你只需使用PHPUnit mocks或Mockery来模拟服务接口/类,在该模拟中定义期望的方法调用和参数,并验证是否满足这些期望。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接