¿Cómo simular el servicio Symfony 2 en una prueba funcional?
Tengo un servicio de Symfony que usa conexión redis en algunos métodos pero no en todos los métodos.
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
}
Estoy escribiendo una prueba funcional para el código que utiliza solo el método getRequest (este método no necesita conexión redis) pero como el constructor toma la conexión como un argumento, cuando ejecuto la prueba, intenté conectar el servidor redis.
¿Cómo puedo escribir un servicio simulado que no usa redis en absoluto e ignorar el constructor original?
Estoy intentando el enfoque mencionado a continuación, pero sin éxito. Todavía intenta conectar redis aunque tengo desactivado el constructor original.
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);