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

时间:2014-03-10 04:43:18

标签: unit-testing symfony configuration mocking

我正在为使用服务访问外部API的Symfony2控制器编写单元测试。为了单元测试,我已经为这个服务做了一个模拟子类,它检查控制器是否给它正确的输入。

服务的配置位于{bundle}/Resources/config/parameters.yml。目前我正在覆盖app/config/config_test.yml中的服务类参数,以便我的单元测试将使用模拟服务。

如果可以的话,我想将测试配置放在我的捆绑包中,但是当我在{bundle}/Resources/config中创建一个被忽略的config_test.yml时。有没有办法使这项工作,或我的环境特定配置是否必须留在应用程序目录下?

3 个答案:

答案 0 :(得分:1)

我建议您在捆绑中使用自己的loader。并根据env加载不同的yml文件。

答案 1 :(得分:0)

对于任何寻找设置不同环境的方法的人来说,这是docs的解决方案。

基本上,您需要添加一个framework密钥,其中test参数设置为true或任何其他非虚假值:

imports:
    - { resource: config_dev.yml }

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

答案 2 :(得分:-1)

你的问题没有意义,因为你在谈论单元测试和阅读一些首先是反应性的配置。

如果你真的正在进行单元测试 - 也就是说,只是在所有依赖项被存根或模拟出来时测试单个类 - 那么你就不应该访问任何配置。您只需使用PHPUnit模拟或Mockery模拟服务接口/类,根据应该调用哪些方法以及应该接收哪些参数来定义对模拟的期望,然后验证是否满足这些期望。