0
我必須測試一些使用在執行期間從容器中獲取的服務的命令。在執行測試期間修改要從容器中使用的服務
可以讓命令在測試執行期間使用不同的服務?
PS:重寫config_test.yml中的服務定義不是一個選項,因爲它會導致應用程序的基本流程中斷。
我必須測試一些使用在執行期間從容器中獲取的服務的命令。在執行測試期間修改要從容器中使用的服務
可以讓命令在測試執行期間使用不同的服務?
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
,看看它是如何工作的細節。
我忘了說我正在Symfony2中開發。 – 2013-04-26 07:54:12