2

我在 PHP 中有一个方法,如下所示:

<?php
class SomeClass
{
    public function isEntitledToDiscount(GuestModel $who, $onWhat, &$discountAmount = null)
    {
        $discountAmount = 10;
        return true;
    }
}

有没有办法$discountAmount在 PHPSpec 中存根?假设我有一个正在测试的类,并且我已经$someService通过构造函数注入。在我的规范中,我使用:

<?php
$someService->isEntitledToDiscount($guest, $ticket, $discountAmount)->willReturn(true);

它为方法返回值创建存根。如何使用$discountAmount形式参数执行此操作?

4

1 回答 1

2

一个方法不应该修改它的参数(不应该有副作用)。尤其是 getter 类型的方法。您可能应该重新考虑您的设计。

您的问题实际上与 prohpecy 有关,因此您可能需要阅读其文档:https ://github.com/phpspec/prophecy

预言(和 PhpSpac)使一些事情变得困难。在大多数情况下,这意味着您试图在设计上走错路

您可以尝试以下操作,但我认为您不会获得对变量的引用:

$someService->isEntitledToDiscount($guest, $ticket, $discountAmount)
    ->will(function ($arguments) {
        // do your evil
    });

推荐阅读:命令查询分离

于 2014-02-09T22:15:02.547 回答