7

CompilerPassInterface::process()Symfony2インスタンスを単体テストする方法について何かアドバイスはありますか?

特に、私がテストしたいものは、一般的にタグ付けされたアイテムを扱い、「マネージャー」サービスにメソッド呼び出しを追加します。

4

1 に答える 1

12

単独でテストしたい場合は、 をモックしContainerBuilder、それが返すサービス定義をモックする必要があります。

しかし、それは通常かなり迷惑です。そのため、代わりに統合テストを作成する傾向があります。実際、symfony コアのほとんどのコンパイラパステストも同様です。

するでしょう:

  • のインスタンスを作成しますContainerBuilder
  • いくつかのスタブ サービスを登録する
  • コンパイラ パスを作成する
  • 電話$pass->process($container);
  • パスが正しく機能したことをアサートする

この例については、RemoveUnusedDefinitionsPassTestを見てください。

于 2013-02-25T13:13:32.523 に答える