2017-01-09 66 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