2014-02-06 82 views
2

傳遞形式參數我在PHP的方法,看起來像這樣:存根供參考PHPSpec /預言

<?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形式參數來做到這一點?

回答

2

方法不應該修改它的參數(不應該有副作用)。特別是一種吸氣式方法。 你應該重新考慮你的設計。

你的問題實際上涉及到prohpecy,所以你可能需要閱讀它的文檔:https://github.com/phpspec/prophecy

預言(和PhpSpac)使有些難。在大多數情況下,這意味着你試圖用你的設計錯誤轉彎。

你可以嘗試以下方法,但我不認爲你會得到一個引用您的變量:

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

推薦閱讀:Command Query Separation

+0

這怎麼能成爲OP的問題的答案? –