我有嘲弄父方法的問題,這是例子:PHPUnit的模擬父方法
class PathProvider
{
public function getPath()
{
return isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';
}
}
class Uri extends PathProvider
{
public function getParam($param)
{
$path = $this->getPath();
if ($path == $param)
return 'OK';
else
return 'Bad';
}
}
,現在我想模擬方法的getPath(),和呼叫方法getParam()不只這recive嘲笑值。
$mock = $this->getMock('PathProvider');
$mock->expects($this->any())
->method('getPath')
->will($this->returnValue('/panel2.0/user/index/id/5'));
我寫了這部分,但我不知道如何將這個模擬值傳遞給測試方法。
我認爲重新設計可能是有序的,Uri不是PathProvider,它只是需要它的服務。 – GordonM 2013-02-12 07:34:18
@GordonM完全正確!你應該將PathProvider作爲一個依賴項並將它注入Uri類(通過控制器或setter)。不要過度使用異步 – Cyprian 2013-02-12 08:33:49