PHPUnit 模拟一个对象的属性
PHPUnit Mock an object's properties
我正在寻找一种模拟对象并填充其属性的方法。
下面是一个使用另一个对象的 属性 的方法示例:
class MyClass {
private $_object;
public function methodUnderTest($object) {
$this->_object = $object;
return $this->_object->property
}
}
为了对该方法进行单元测试,我应该使用 PHPUnit
中的 getMockBuilder()
方法创建 $object
的模拟。但是我找不到一种方法来模拟 $object
的属性,只有方法。
要向模拟对象添加属性,您只需像通常对对象所做的那样设置它们:
$mock = $this->getMockBuilder('MyClass')
->disableOriginalConstructor()
->getMock();
$mock->property = 'some_value';
$mock->property
现在 return 'some_value'
感谢 akond
P.s。对于我的项目,这不适用于某些 类,当我尝试调用 $mock->property
时,它只是 returns NULL
如果你有 类 魔法方法,你可以使用:
$mock->method('__get')->with('property')->willReturn('value');
我正在寻找一种模拟对象并填充其属性的方法。 下面是一个使用另一个对象的 属性 的方法示例:
class MyClass {
private $_object;
public function methodUnderTest($object) {
$this->_object = $object;
return $this->_object->property
}
}
为了对该方法进行单元测试,我应该使用 PHPUnit
中的 getMockBuilder()
方法创建 $object
的模拟。但是我找不到一种方法来模拟 $object
的属性,只有方法。
要向模拟对象添加属性,您只需像通常对对象所做的那样设置它们:
$mock = $this->getMockBuilder('MyClass')
->disableOriginalConstructor()
->getMock();
$mock->property = 'some_value';
$mock->property
现在 return 'some_value'
感谢 akond
P.s。对于我的项目,这不适用于某些 类,当我尝试调用 $mock->property
时,它只是 returns NULL
如果你有 类 魔法方法,你可以使用:
$mock->method('__get')->with('property')->willReturn('value');