如何在 PHPUnit_Framework_MockObject_Stub_ReturnValueMap 对象上设置 属性?

How to set property on PHPUnit_Framework_MockObject_Stub_ReturnValueMap object?

来自测试方法的代码片段:

$mock->expects($this->any())
  ->method('get')
  ->willReturn($this->returnValueMap(['foo', new FooMock()]));

$service->doSomething($mock);

Return 值模拟:

class FooMock {   

  public $bar;

  public function __construct() {
    $this->bar = new \stdClass;   
  }
}

我正在测试的代码:

class Service {
   function doSomething($object) {
     //do something
     return $object->get('foo')->bar;
   }
}

错误:

Undefined property: PHPUnit_Framework_MockObject_Stub_ReturnValueMap::$bar

在您的代码中:

$mock->expects($this->any())
  ->method('get')
  ->willReturn($this->returnValueMap(['foo', new FooMock()]));

您使用参数调用 returnValueMap - 数组 ['foo', new FooMock()]。但是,该方法需要一个包含映射 (documentation) 的 数组数组 。试试这个:

$mock->expects($this->any())
  ->method('get')
  ->willReturn($this->returnValueMap([['foo', new FooMock()]]));