我正在为使用服务访问外部API的Symfony2控制器编写单元测试。为了单元测试,我已经为这个服务做了一个模拟子类,它检查控制器是否给它正确的输入。
服务的配置位于{bundle}/Resources/config/parameters.yml
。目前我正在覆盖app/config/config_test.yml
中的服务类参数,以便我的单元测试将使用模拟服务。
如果可以的话,我想将测试配置放在我的捆绑包中,但是当我在{bundle}/Resources/config
中创建一个被忽略的config_test.yml时。有没有办法使这项工作,或我的环境特定配置是否必须留在应用程序目录下?
答案 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模拟服务接口/类,根据应该调用哪些方法以及应该接收哪些参数来定义对模拟的期望,然后验证是否满足这些期望。