PHPUnit and mock request from Guzzle

The mocked Response doesn't need to be anything in particular, your code just expects it to be an object with a getBody method. So you can just use a stdClass, with a getBody method which returns some json_encoded object. Something like:

$jsonObject = json_encode(['foo']);
$uri = 'path/to/foo/bar/';

$mockResponse = $this->getMockBuilder(\stdClass::class)->getMock();

$mockResponse->method('getBody')->willReturn($jsonObject);

$clientMock = $this->getMockBuilder('GuzzleHttp\Client')->getMock();

$clientMock->expects($this->once())
    ->method('request')
    ->with(
        'GET', 
        $uri,
        $this->anything()
    )
    ->willReturn($mockResponse);

$result = $yourClass->get($uri);

$expected = json_decode($jsonObject);

$this->assertSame($expected, $result);

I think as suggested is better to use http://docs.guzzlephp.org/en/stable/testing.html#mock-handler

as it looks like the most elegant way to do it properly.

Thank you all