如果这个问题看起来不对,我很抱歉,我对Stack Overflow和PHP都是新手。
我的类看起来有点像这样:
final class MyClass extends TestCase
{
private MyService $myService;
private ObjectProphecy $object;
private array $x;
protected function setUp(): void
{
$this->object = $this->getProphet()->prophesize(MyOtherClass::class);
$this->x = [];
$this->object->foo()->willReturn($this->x);
}
public function test(): void
{
$this->x = [1];
$this->myService->bar();
}
}
问题是,在$this->myService->bar();
的调用中,在执行object->foo()
时,我得到了[]
,它是在setUp()
方法中设置的,我希望它是[1]
。
我怀疑这是因为$this->object->foo()->willReturn($this->x);
复制了$this->x
,然后没有注意到我后来做的修改。但是,如果我把$x
修改为某个对象而不是数组,一切都像我期望的那样工作。
什么是最干净的处理方法呢?我希望像声明$x
是指向数组的指针,但这似乎是不可能的?
1条答案
按热度按时间tcomlyy61#
有可能返回一个引用.测试PHPUnit 10.3 .
注意事项
这没有用
ObjectProphecy
测试过,因为它似乎没有实现默认的mocking对象。所以对于这个示例代码,我使用了原生的PHPUnitMockObject
。