実行中にコンテナから取得されたサービスを使用しているいくつかのコマンドをテストする必要があります。
テスト実行中に別のサービスを使用するコマンドを作成することは可能ですか?
PS: config_test.yml のサービス定義をオーバーライドすることはオプションではありません。アプリケーションの基本的なフローが壊れるからです。
symfony によって使用される依存性注入コンテナーはset
、コンテナーによって返されるサービスを変更するために使用できるメソッドを公開します。
$container->set('my.service.id', new InjectedService);
テストのコンテキストでこれを行う場合、各テストに使用されるクラスを変更できます。
set メソッドのシグネチャは次のようになります。
/**
* Sets a service.
*
* @param string $id The service identifier
* @param object $service The service instance
* @param string $scope The scope of the service
*
* @api
*/
public function set($id, $service, $scope = self::SCOPE_CONTAINER);
を見て、Symfony\Component\DependencyInjection\ContainerInterface
それがどのように機能するかを詳細に確認してください。