У меня есть простой тест:
function it_should_return_error_response_exception(Client $httpClient,CommandInterface $commandInterface)
{
$httpClient->setDefaultOption('auth', array('api','api_pass', 'Basic'))
->shouldBeCalled();
$httpClient->getCommand('search', array('api_key' => 'ehudwqukhjda'))
->shouldBeCalled()
->willReturn($commandInterface);
$httpClient->execute($commandInterface)
->shouldBeCalled()
->willThrow(new BadResponseException('???', new Request('POST', 'http://vatteloapesca')));
$this->shouldThrow('Acme\Exception\ErrorResponseException')
->during('runCommand', array('search', array('api_key' => 'ehudwqukhjda')));
}
И это код, который я хочу протестировать:
try{
$result = $this->guzzleClient->execute($command);
} catch (BadResponseException $e) {
ErrorHandler::processError($e);
}
return $result;
Класс обработчика ошибок уже протестирован и вернет класс, расширяющий «Acme\Exception\ErrorResponseException». Вопрос в том, как издеваться над возвращающимся Exception от клиента жрать??
Я пытался использовать willTrhow и ThrowPromises пророчества https://github.com/phpspec/prophecy.
В чем моя ошибка?
Я имею в виду, с этим кодом:
$httpClient->execute($commandInterface)
->shouldBeCalled()
->willThrow(new BadResponseException('???', new Request('POST', 'http://vatteloapesca')));
'runCommand' (проверенная функция) вернет исключение BadResponseException, но оно не перехватывается моим кодом.