2015-12-02 38 views
1

我想測試函數內的一些變量,但是這個函數不會返回它。從模擬返回變量(PHP)

我有這樣的功能:

<?php 

class Test 
{ 

    private $repo;  

    public function __construct($repo) 
    { 
     $this->repo = $repo; 
    } 

    public function exemple() 
    { 
     $name = 'Example name'; 
     $this->repo->add($name); 
    } 

} 

和測試這樣的:

<?php 

use Mockery as M; 

class someTest extends TestCase 
{ 
    public testConstract() 
    { 
     $repo = M::mock(SomeClass::class); 
     $repo->shouldReceive('add'); 
     $test = new Test($repo); 
     $test->exemple(); 
    } 
} 

如何我可以測試變量$name

回答

1

您可以使用withArgs指令作爲described in the doc。 爲例,你可以修改你的測試如下:

<?php 

use Mockery as M; 

class someTest extends TestCase 
{ 
    public testConstract() 
    { 
     $repo = M::mock(SomeClass::class); 
     $repo->shouldReceive('add')->withArgs(array('Example name')); 
     $test = new Test($repo); 
     $test->exemple(); 
    } 
} 

希望這有助於

+0

謝謝!但我的意思是我怎麼能assertEquals('示例名稱,$名稱)? – Iwan

+0

Hi @Iwan這個斷言隱含在期望的定義中。你可以嘗試一個錯誤的參數消息(例如:' - > withArgs(array('wrong input'));' – Matteo

+0

好的,謝謝,但是如果我必須測試變量,我想我只能'返回$ name '? – Iwan