Wie macht man sich in einem Funktionstest über den Symfony 2-Dienst lustig?
Ich habe Symfony-Dienst, der Redis-Verbindung in einigen Methoden, aber nicht in allen Methoden verwendet.
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
}
Ich schreibe einen Funktionstest für den Code, der nur die getRequest-Methode verwendet (diese Methode benötigt keine Redis-Verbindung), aber da der Konstruktor die Verbindung als Argument verwendet, hat er beim Ausführen des Tests versucht, eine Verbindung zum Redis-Server herzustellen.
Wie kann ich einen Mock-Service schreiben, der überhaupt keine Redis-Verbindung verwendet und den ursprünglichen Konstruktor ignoriert?
Ich versuche Ansatz erwähnt, aber keinen Erfolg. Es wird weiterhin versucht, die Verbindung wiederherzustellen, obwohl ich den ursprünglichen Konstruktor deaktiviert habe.
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);