我有一些問題的理解模仿對象。PHPUnit的模擬只觀察
我想要的是一個觀察者,正常工作但確保使用正確的參數調用方法。
從我瞭解到目前爲止,這應該是什麼我在尋找: 觀察報:
class Observer
{
public function returnFooIfBar($bar)
{
return ($bar == 'bar') ? 'foo' : ;
}
}
主題:
class Subject
{
$obs;
__construct(Observer $dependency)
{
$this->obs = $dependency;
}
public function tradeStrings($string)
{
$this->obs->returnFooIfBar($string);
}
}
測試:
class SubjectTest
{
public function testCallsObsMethod()
{
$obs = $this->getMock('Observer') ;
$obs->expect($this->once())
->method('returnFooIfBar')
->with($this->equlTo('bar')) ;
$subj = new Subject($obs);
$returnString= $subj->TradeStrings('bar') ;
$this->assertEqual('foo', $returnString) ;
}
}
從什麼我明白這個測試:
- 觀察員:: getFooIfBar被調用一次。
- 觀察員:: getFooIfBar得到字符串「酒吧」作爲類中定義,並返回「富」作爲一個字符串 3.方法的工作。
據我所知,沒有改變原始類的功能,除了構造函數/自動加載未被運行。
如果我在運行getMock()時嘲笑方法,模擬對象的方法將只有如果我指定它會返回一些東西。
$obs = $this->getMock('Observer', array('returnFooIfBar'));
$obs->expects($this->once())
->method('returnFooIfBar')
->with('bar')
->will($this->returnValue('foo');
我理解這個權利嗎?如果不是的話,請你澄清一下,因爲我希望對此有所澄清。 :)
編輯:更改了帖子,使其更清晰我以後以及我目前如何理解它。
+1 - 我有幾乎一模一樣的帖子一字排開,但你打我吧:-) – cmbuckley
我已經改變我的帖子,試圖澄清我的看法,以及我如何理解這一刻的事情。 – Penetal
我也進行了更改,請參閱我的編輯。 –