我想模拟一个类的方法,并执行一个回调来修改作为参数给定的对象(使用PHP5.3和PHPUnit 3.5.5)。
假设我有下面的类:
class A
{
function foobar($object)
{
doSomething();
}
}
和这个设置代码:
$mock = $this->getMockBuilder('A')->getMock();
$mock->expects($this->any())->method('foobar')->will(
$this->returnCallback(function($object) {
$object->property = something;
}));
由于某些原因,该对象不会被修改。在var_dump
ing $object
上,我看到它是正确的对象。会不会对象是通过值传递的?如何配置mock以接收引用?
发布于 2018-10-26 06:30:33
这真的很旧,但它出现在搜索的顶部,并为我指明了正确的方向,所以值得更新。从PHPUnit 6.0开始,使用disableArgumentCloning()
,如下所示:
return $this->getMockBuilder('A')
->disableOriginalConstructor()
->disableArgumentCloning()
->setMethods(array('foobar'))
->getMock()
;
https://stackoverflow.com/questions/4702132
复制相似问题