Symfony2单元测试编译器通行证

时间:2013-02-25 07:16:31

标签: symfony phpunit

有没有人对如何对Symfony2 CompilerPassInterface::process()实例进行单元测试有任何建议?

特别是,我想测试的那些通常处理标记的项目,将方法调用添加到“管理器”服务。

1 个答案:

答案 0 :(得分:8)

如果要单独测试它,则必须模拟ContainerBuilder,并模拟它返回的任何服务定义。

但这通常很烦人。所以我倾向于编写集成测试。事实上,这也是大多数编译器通过symfony核心测试的原因。

你会:

  • 创建ContainerBuilder
  • 的实例
  • 注册一些存根服务
  • 创建编译器传递
  • 致电$pass->process($container);
  • 断言传球正确地做了事

有关此示例,请查看RemoveUnusedDefinitionsPassTest