我有嘲弄父方法的问题,这是例子: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