Mock de Requests usando Guzzle, en Laravel

Un problema puntual que tuve recientemente en un proyecto es la necesidad de testear que un controller de Laravel realizara algunos requests HTTP.

Para poder llevar esto adelante tuve que construir una solución, combinando información que encontré en distintas partes.

// mocks http client and responses
$this->mock(\GuzzleHttp\Client::class, function ($mock) {
  $mock->shouldReceive('post')
    ->andReturn([
      new \GuzzleHttp\Psr7\Response(200, [], '{status: "ok"}'),
    ])
    ->once();
});

Referencias:

Este post es sólo una nota/recordatorio para que mi yo del futuro no se tenga que enfrentar con el mismo problema otra vez. 🧐