我想测试这段代码
public function saveRecord( $recordID )
{
if (empty($recordID)) {
return $this;
}
$this->model('Company')->save($this->getData());
return $this;
}
我已经为$ recordID不为空的情况设置了测试:
public function testSaveRecord2()
{
$dataToSave = array(
'name' => 'value1',
'project_stages' => 'value2'
);
$model = $this->getMockBuilder('Company')
->disableOriginalConstructor()
->setMethods(array('save') )
->getMock();
$model->expects($this->once())
->method('save')
->with($dataToSave);
$subject = $this->getMockBuilder('Form_Company_Settings')
->disableOriginalConstructor()
->setMethods(array('getData', 'model') )
->getMock();
$subject->expects($this->once())->method('getData')->will($this->returnValue($dataToSave));
$subject->expects($this->once())->method('model')->will($this->returnValue($model));
$subject->saveRecord(1);
}
我得到的错误是“致命错误:在非对象上调用成员函数save()”,即。当从“模型”函数返回$ model时,它似乎没有保存函数。
我也尝试过:
public function testSaveRecord2()
{
$dataToSave = array(
'name' => 'value1',
'project_stages' => 'value2'
);
$model = $this->getMockBuilder('Company')
->disableOriginalConstructor()
->setMethods(array('save') )
->getMock();
$model->expects($this->once())
->method('save')
->with($dataToSave);
$subject = $this->getMockBuilder('Form_Company_Settings')
->disableOriginalConstructor()
->setMethods(array('getData') )
->getMock();
$subject->expects($this->once())->method('getData')->will($this->returnValue($dataToSave));
$subject->saveRecord(1);
}
希望我不需要模拟模型,只需让它将公司对象返回给我。在这种情况下,我得到 “方法名称的期望失败等于1次调用时。 预计方法被调用1次,实际上被称为0次“
我看不出为什么不在这里调用保存?
答案 0 :(得分:1)
在模拟静态函数调用时,您需要使用 staticExpects 而不是期望。