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 回答