Тестирование класса в phpspec с использованием GuzzlePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Тестирование класса в phpspec с использованием Guzzle

Сообщение Anonymous »

Я пытаюсь создать класс, который запрашивает внешний API. Каждый метод, соответствующий конечной точке, вызывает метод «главного вызова», ответственный за фактическую отправку запроса в API.

Например:
// $this->http is Guzzlehttp\Client 5.3

public function call($httpMethod, $endpoint, array $parameters = [])
{
$parameters = array_merge($parameters, [
'headers' => [
'something' => 'something'
]
]);

$request = $this->http->createRequest($httpMethod, $this->baseUrl . $endpoint, $parameters);

return $this->http->send($request);
}

public function getAll()
{
return $this->call('GET', 'all');
}


Над чем я должен издеваться? Должен ли я использовать willBeCalled() и/или willReturn() в методах createRequest() и send() http-клиента?
Когда я имитирую send(), он говорит: Аргумент 1, переданный в Double\GuzzleHttp\Client\P2::send(), должен реализовать интерфейс GuzzleHttp\Message\RequestInterface, задано значение null
и я не уверен, как это сделать, потому что для создания манекена для этого интерфейса мне нужно реализовать 30 методов в этом классе.

Вот тест прямо сейчас:

function it_lists_all_the_things(HttpClient $http)
{
$this->call('GET', 'all')->willBeCalled();
$http->createRequest()->willBeCalled();
$http->send()->willReturn(['foo' => 'bar']);

$this->getAll()->shouldHaveKeyWithValue('foo', 'bar');
}


Подробнее здесь: https://stackoverflow.com/questions/309 ... ing-guzzle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»