2017-05-05 3 views
0

Ich versuche, einen Dienst zu testen, der die Symfony\Component\HttpKernel\Kernel als Abhängigkeit verwendet.PHPUnit & Symfony: Mock Kernel Fehler

Dies ist, was ich tun, um den Kernel zu verspotten.

$this->kernel = $this->getMock('Symfony\Component\HttpKernel\KernelInterface'); 
$this->kernel->expects($this->any()) 
    ->method('getEnvironment') 
    ->will($this->returnValue('dev')); 

Wenn ich den Test ausführen, erhalte ich etwas wie den folgenden Fehler.

Fatal error: Kann nicht statisch foo neu deklarieren \ foo \ WebTestCase :: $ Kernel als nicht statisch foo \ foo \ MyTest :: $ Kernel in ...

Irgendwelche Ideen, warum?

Antwort

2

Lesen Sie die Fehlermeldung sorgfältig. WebTestCase::$kernel ist eine statische Variable, was bedeutet, dass Sie mit $this nicht darauf zugreifen können. Ein Versuch, es als Instanzvariable zu überschreiben, verursacht diesen Fehler.

Außerdem WebTestCase Klasse ist nicht eine Basisklasse für Komponententests, wo Sie den Kern spotten. Es ist eine Klasse, die das Schreiben von Funktionstests erleichtert, weshalb der echte Kernel in diese statische Variable eingefügt wird. Wenn Sie einen Komponententest schreiben und den Kernel überspielen möchten, verwenden Sie die übliche Klasse TestCase von PHPUnit.