2017-01-09 63 views
0

有一些麻煩在功能測試嘲諷Codeception,嘲諷狂飲

對於嘲笑我用嘲弄Laravel,寫上Codeception

測試需要測試驗證發送消息給用戶。

我試着模擬狂飲在幾個方面(客戶端,ClientInterface,ResponceInterface),代碼看起來是這樣的:

$client = Mockery::mock(GuzzleHttp\Client::class); 
$client->shouldReceive('get')->once(); 

$I->haveInstance(GuzzleHttp\Client::class, $client); 

所有嘗試接收:

get()方法從Mockery_2_GuzzleHttp_Client應該叫
恰好1次,但被稱爲0次。我想測試控制器的

部分:

$client = new \GuzzleHttp\Client(); 
$url = config('sms.url') . '/sys/send.php?login=' . config('sms.login') . '&psw=' . config('sms.password') . '&phones=' 
      . $user->phone . '&mes=' . urlencode($data['notification']) . '&charset=utf-8'; 
$client->get($url); 

回答

0

haveInstance方法增加了一個實例綁定到Laravel服務容器。

您的控制器代碼不會從服務容器中檢索Guzzle Client,但會創建一個新實例。這是一個不可測的代碼。

您必須修改控制器代碼以使用服務容器。

+0

你能指導正確的方法如何做到這一點? – vladnev

+0

不,我不使用Laravel。 – Naktibalda