2017-05-30 40 views
1

我嘲笑的對象,寫像這樣的測試...傳遞一個嘲笑對象PHPUnit中/ Laravel實例

public function test_mocked_object(){ 
    $purchase = new Purchase(); 
    $purchase_m = \Mockery::mock($purchase); 
    $purchase_m->shouldReceive('internalMethod')->andReturn('GOLD'); 

    $purchase_m->testMethod('test'); 
} 

testMethod()包含internalMethod()一個電話,是這樣的...

public function testMethod($string){ 
    $this->internalMethod(); 
} 

...但時間執行到達調用$this->internalMethod()$this現在是原始$purchase對象的實例,而不是嘲笑$purchase_m對象的實例。

因此,函數調用$this->internalMethod()不會像我們希望的那樣返回「GOLD」。

任何指針將不勝感激。

回答

0

呵呵沒關係!解決了它。

$shpm \Mockery::mock(Purchase::class)->makePartial(); 

通過創建partial mock,在調用其上的方法時保持實例不變。

希望這可以幫助別人!