2013-02-25 75 views
3

有沒有人對如何單元測試Symfony2 CompilerPassInterface::process()實例有任何建議?Symfony2單元測試編譯通行證

特別是,我想測試的人通常會處理加標籤的項目,並將方法調用添加到「經理」服務。

回答

5

如果你想單獨測試它,你必須模擬ContainerBuilder,並模擬它返回的任何服務定義。

雖然這通常很煩人。所以我傾向於寫一個集成測試。事實上,這正是大部分編譯器通過symfony核心測試的結果。

你會:

  • 創建的ContainerBuilder
  • 實例註冊一些存根服務
  • 創建編譯通
  • 呼叫$pass->process($container);
  • 斷言通正確
  • 做它的事

有關此示例,請參閱RemoveUnusedDefinitionsPassTest

+0

完美,謝謝。我認爲真正的隔離測試會有些過分,所以集成測試是完美的。 – samanime 2013-02-25 16:31:34