2013-04-26 38 views
0

我必須測試一些使用在執行期間從容器中獲取的服務的命令。在執行測試期間修改要從容器中使用的服務

可以讓命令在測試執行期間使用不同的服務?

PS:重寫config_test.yml中的服務定義不是一個選項,因爲它會導致應用程序的基本流程中斷。

+0

我忘了說我正在Symfony2中開發。 – 2013-04-26 07:54:12

回答

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,看看它是如何工作的細節。

相關問題