如何在功能测试中模拟Symfony 2服务?
2022-08-30 14:46:24
我有symfony服务,它在某些方法中使用redis连接,但不是在所有方法中。
class ServiceA
{
private $redis;
public function __construct($redis)
{
$this->redis = $redis;
}
public function getRequest($param1, $param2)
{
$result = $param1+ $param2;
return $request;
}
.. other methods which use $redis connection
}
我正在为仅使用getRequest方法的代码编写功能测试(此方法不需要redis连接),但是由于构造函数将连接作为参数,因此当我运行测试时,它尝试连接redis服务器。
我怎么能写出根本不使用redis连接的模拟服务,并忽略原始构造函数。
我正在尝试下面提到的方法,但没有成功。即使我已经禁用了原始构造函数,它仍然会尝试连接redis。
http://blog.lyrixx.info/2013/04/12/symfony2-how-to-mock-services-during-functional-tests.html
$serviceA = $this->getMockBuilder('ServiceA')
->disableOriginalConstructor()
->getMock();
static::$kernel->getContainer()->set('my_bundle.service.a', $serviceA);