【问题标题】:How to set property on PHPUnit_Framework_MockObject_Stub_ReturnValueMap object?如何在 PHPUnit_Framework_MockObject_Stub_ReturnValueMap 对象上设置属性?
【发布时间】:2016-10-03 10:11:30
【问题描述】:

测试方法中的一段代码:

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

$service->doSomething($mock);

返回值模拟:

class FooMock {   

  public $bar;

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

我正在测试的代码:

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

错误:

未定义的属性: PHPUnit_Framework_MockObject_Stub_ReturnValueMap::$bar

【问题讨论】:

    标签: php unit-testing mocking phpunit


    【解决方案1】:

    在您的代码中:

    $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()]]));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2013-02-20
      相关资源
      最近更新 更多