我在PHP中有一个方法,如下所示:
<?php
class SomeClass
{
public function isEntitledToDiscount(GuestModel $who, $onWhat, &$discountAmount = null)
{
$discountAmount = 10;
return true;
}
}
有没有办法在PHPSpec中存根$discountAmount
?假设我有一个我正在测试的类,我通过构造函数注入了$someService
。在我的规范中,我使用:
<?php
$someService->isEntitledToDiscount($guest, $ticket, $discountAmount)->willReturn(true);
为方法返回值创建存根。如何使用$discountAmount
形式参数执行此操作?
答案 0 :(得分:2)
方法不应修改其参数(不应有副作用)。特别是吸气型方法。 您应该重新考虑您的设计。
您的问题实际上与问题相关,因此您可能需要阅读其文档:https://github.com/phpspec/prophecy
预言(和PhpSpac)使事情变得艰难。在大多数情况下,这意味着你试图用你的设计做错了。
您可以尝试以下操作,但我认为您不会获得对变量的引用:
$someService->isEntitledToDiscount($guest, $ticket, $discountAmount)
->will(function ($arguments) {
// do your evil
});
推荐阅读:Command Query Separation。