PHPUnit模拟对象的属性

时间:2017-06-15 15:07:42

标签: php unit-testing mocking phpunit mockery

我锁定了一种模拟对象并填充其属性的方法。 这是使用另一个对象的属性的方法示例:

class MyClass {

    private $_object;

    public function methodUnderTest($object) {
        $this->_object = $object;
        return $this->_object->property
    }
}

要单元测试此方法我应该使用$object中的getMockBuilder()方法创建PHPUnit模拟。但我无法找到一种方法来模拟$object的属性,只是方法。

2 个答案:

答案 0 :(得分:16)

要向模拟对象添加属性,只需将它们设置为通常用对象执行的操作:

$mock = $this->getMockBuilder('MyClass')
             ->disableOriginalConstructor()
             ->getMock();

$mock->property = 'some_value';

$mock->property现在将返回'some_value'

感谢 akond

P.S。对于我的项目,这不适用于某些类,当我尝试调用$mock->property时,它只返回NULL

答案 1 :(得分:0)

如果你的类有魔法方法,你可以使用:

$mock->method('__get')->with('property')->willReturn('value');