首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >修改PHPUnit Mock的returnCallback()中的对象

修改PHPUnit Mock的returnCallback()中的对象
EN

Stack Overflow用户
提问于 2011-01-16 05:05:53
回答 1查看 25.6K关注 0票数 21

我想模拟一个类的方法,并执行一个回调来修改作为参数给定的对象(使用PHP5.3和PHPUnit 3.5.5)。

假设我有下面的类:

代码语言:javascript
复制
class A
{
  function foobar($object) 
  {
    doSomething();
  }
}

和这个设置代码:

代码语言:javascript
复制
$mock = $this->getMockBuilder('A')->getMock();
$mock->expects($this->any())->method('foobar')->will(
  $this->returnCallback(function($object) {
    $object->property = something;
  }));

由于某些原因,该对象不会被修改。在var_dumping $object上,我看到它是正确的对象。会不会对象是通过值传递的?如何配置mock以接收引用?

EN

回答 1

Stack Overflow用户

发布于 2018-10-26 06:30:33

这真的很旧,但它出现在搜索的顶部,并为我指明了正确的方向,所以值得更新。从PHPUnit 6.0开始,使用disableArgumentCloning(),如下所示:

代码语言:javascript
复制
return $this->getMockBuilder('A')
    ->disableOriginalConstructor()
    ->disableArgumentCloning()
    ->setMethods(array('foobar'))
    ->getMock()
;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4702132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档