首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHPSpec:通过引用返回函数

PHPSpec:通过引用返回函数
EN

Stack Overflow用户
提问于 2018-04-17 09:24:02
回答 2查看 288关注 0票数 3

我在我的项目中更新了Doctrine2.5到2.6,phpspec就坏了。

函数getEntityChangeSet()现在通过引用返回。它似乎不受phpspec的支持。

代码语言:javascript
运行
复制
$unitOfWork
    ->getEntityChangeSet($site)
    ->willReturn(['_dataParent' => [0 => 2, 1 => 3]]);

响应为returning by reference not supported

底层函数(学说/教条2)是

代码语言:javascript
运行
复制
public function & getEntityChangeSet($entity)
{
    $oid  = spl_object_hash($entity);
    $data = [];

    if (!isset($this->entityChangeSets[$oid])) {
        return $data;
    }

    return $this->entityChangeSets[$oid];
}

你知道是否有可能绕过这个或改变测试使它工作吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-17 12:02:45

@Pamilme在推特上给出了答案

你必须用嘲弄的方式嘲笑UnitOfWork。一个例子可以找到这里

代码语言:javascript
运行
复制
    /** @var UnitOfWork|MockInterface $unitOfWork */
    $unitOfWork = Mockery::mock(UnitOfWork::class);
    $unitOfWork->shouldReceive('getEntityChangeSet')->withArgs([$productAttribute->getWrappedObject()])->andReturn([
        'configuration' => [
            ['choices' => [
                '8ec40814-adef-4194-af91-5559b5f19236' => 'Banana',
                '1739bc61-9e42-4c80-8b9a-f97f0579cccb' => 'Pineapple',
            ]],
            ['choices' => [
                '8ec40814-adef-4194-af91-5559b5f19236' => 'Banana',
            ]],
        ],
    ]);
    $entityManager->getUnitOfWork()->willReturn($unitOfWork);
票数 5
EN

Stack Overflow用户

发布于 2022-05-13 08:22:32

如果在测试类上扩展了TestCase,还可以执行以下操作:

代码语言:javascript
运行
复制
$uow = $this->createMock(UnitOfWork::class);
$uow->method('getEntityChangeSet')->willReturn(['_dataParent' => [0 => 2, 1 => 3]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49874392

复制
相关文章

相似问题

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