0

実行中にコンテナから取得されたサービスを使用しているいくつかのコマンドをテストする必要があります。

テスト実行中に別のサービスを使用するコマンドを作成することは可能ですか?

PS: config_test.yml のサービス定義をオーバーライドすることはオプションではありません。アプリケーションの基本的なフローが壊れるからです。

4

1 に答える 1

0

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それがどのように機能するかを詳細に確認してください。

于 2013-04-27T08:40:44.027 に答える