У меня есть такой класс:
class CategoryClient
{
private $categories;
/**
* Constructor
* Retrieves JSON File
*/
public function __construct(Client $client)
{
$response = $client->request('GET', config('services.url'));
$this->categories = collect(json_decode($response->getBody(), true));
}
}
Как мне издеваться над ответом json для тестирования в PHPUnit? и установить переменную $this->categories
?
Вы можете использовать Мок-обработчик стратегии тестирования Guzzle и создать экземпляр своего класса Client. В качестве примера:
$mock = new MockHandler([
new Response(200, [], '{
"categories": [
{ "id" : 1,
"name": "category name 1"},
{ "id" : 2,
"name": "category name 3"},
]
}');
$handler = HandlerStack::create($mock);
$guzzleClient= new Client(['handler' => $handler]);
$categoryClient = new CategoryClient($guzzleClient);
Надеюсь на эту помощь
Беру пока издеваюсь жрать - он "игнорирует" любые запросы? Поэтому, несмотря на использование $ response-> getBody () в конструкторе, он все же смог вернуть требуемый json.
Идеально. Спасибо :-D