2017-05-05 29 views
0

我試圖測試一個服務,它將Symfony\Component\HttpKernel\Kernel作爲依賴項。PHPUnit&Symfony:模擬內核錯誤

這是我爲了模擬內核而做的。

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

當我運行測試時,我得到如下的錯誤。

致命錯誤:不能重新聲明靜態富\富\ WebTestCase :: $內核非靜態FOO \富\ MyTest的:: $內核...

任何想法,爲什麼?

回答

2

仔細閱讀錯誤消息。 WebTestCase::$kernel是一個靜態變量,這意味着您無法通過$this訪問它。試圖將其作爲實例變量覆蓋會導致此錯誤。

此外,WebTestCase類不是用於模擬內核的單元測試的基類。這是一個便於編寫功能測試的類,這就是爲什麼真正的內核被注入到這個靜態變量中的原因。如果你想編寫一個單元測試並模擬內核,請使用PHPUnit中通常的TestCase類。