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');