Tôi có vấn đề với chế giễu phương pháp phụ huynh, đây là ví dụ:PHPUnit phương pháp mô hình mẹ
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';
}
}
Và bây giờ tôi muốn phương pháp getPath giả(), và gọi phương thức getParam() mà recive chế giễu giá trị.
$mock = $this->getMock('PathProvider');
$mock->expects($this->any())
->method('getPath')
->will($this->returnValue('/panel2.0/user/index/id/5'));
Tôi đã viết phần này, nhưng tôi không biết làm cách nào tôi phải chuyển giá trị giả này vào phương pháp thử nghiệm.
Tôi nghĩ thiết kế lại có thể theo thứ tự, Uri không phải là Nhà cung cấp dịch vụ hướng dẫn, nó chỉ cần dịch vụ của mình. – GordonM
@GordonM hoàn toàn đúng! Bạn nên làm cho PathProvider như là một phụ thuộc và tiêm nó bên trong lớp Uri (thông qua bộ điều khiển hoặc settter). Đừng lạm dụng intheritance – Cyprian