PHPUnit 模拟对象的属性

2022-08-30 14:32:13

我正在寻找一种方法来模拟对象并填充其属性。下面是使用另一个对象的属性的方法的示例:

class MyClass {

    private $_object;

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

要对此方法进行单元测试,我应该使用 中的方法创建一个模拟。但是我找不到一种方法来模拟 ,只是方法。$objectgetMockBuilder()PHPUnit$object


答案 1

要向模拟对象添加属性,只需像通常对对象所做的那样设置属性:

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

$mock->property = 'some_value';

$mock->property现在会回来'some_value'

感谢阿康德

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


答案 2

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

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

推荐