【发布时间】:2013-12-09 05:00:04
【问题描述】:
我正在为我的视图助手编写一些测试。这是我第一次想用模拟对象做一些事情。我正在使用默认的 PHPUnit 模拟框架。
我编写了一个函数来准备我的模拟对象:
private function getTestStub(){
$mockResult = array();
$mock = $this->getMock('My\Entity\Product');
$mock->expects($this->once())
->method('getId')
->will($this->returnValue(1));
$mock->expects($this->once())
->method('getName')
->will($this->returnValue('jan'));
$mock->expects($this->once())
->method('getWoonplaats')
->will($this->returnValue('Amsterdam'));
$mockResult[] = $mock;
return $mockResult;
}
现在,当我使用此存根进行测试时,我收到以下错误:
Fatal error: Call to undefined method Mock_Product_129abca6::getId()
我在这里做错了什么?
【问题讨论】:
-
Product::getId存在吗?这不是魔术方法(例如__call生成的东西)? -
好吧,正如你在我的代码中看到的那样,它被嘲笑了
-
你应该发布在
My\Entity\Product定义的类(或接口)。 -
但是那个类被嘲笑了。真正的 My\Entity\Product 与它有什么关系?