7

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

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

4

1 回答 1

12

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

不过,这通常很烦人。所以我倾向于写一个集成测试。事实上,这也是 symfony 内核的大多数编译器通过测试所做的。

你会:

  • 创建一个实例ContainerBuilder
  • 注册一些存根服务
  • 创建编译器通道
  • 称呼$pass->process($container);
  • 断言通行证正确地完成了它的事情

例如,请查看RemoveUnusedDefinitionsPassTest

于 2013-02-25T13:13:32.523 回答