2013-02-25 83 views
3

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

特别是,我想测试的人通常会处理加标签的项目,并将方法调用添加到“经理”服务。

回答

5

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

虽然这通常很烦人。所以我倾向于写一个集成测试。事实上,这正是大部分编译器通过symfony核心测试的结果。

你会:

  • 创建的ContainerBuilder
  • 实例注册一些存根服务
  • 创建编译通
  • 呼叫$pass->process($container);
  • 断言通正确
  • 做它的事

有关此示例,请参阅RemoveUnusedDefinitionsPassTest

+0

完美,谢谢。我认为真正的隔离测试会有些过分,所以集成测试是完美的。 – samanime 2013-02-25 16:31:34