【问题标题】:Modify services to use from Container during test execution修改服务以在测试执行期间从 Container 使用
【发布时间】:2013-04-26 07:26:22
【问题描述】:

我必须测试一些在执行期间使用从容器中获取的服务的命令。

是否可以让Command在测试执行时使用不同的服务?

PS:重写 config_test.yml 中的服务定义不是一种选择,因为它会导致应用程序的基本流程中断。

【问题讨论】:

  • 我忘了说我是在 Symfony2 中开发的。

标签: php symfony phpunit


【解决方案1】:

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 以了解其工作原理的详细信息。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多