public function testExecute() { $httpRequestBuilder = $this->prophesize(HttpRequestBuilderInterface::class); $transport = $this->prophesize(TransportInterface::class); $resultBuilderEngine = $this->prophesize(ResultBuilderEngineInterface::class); $request = $this->prophesize(RequestInterface::class); $result = $this->prophesize(ResultInterface::class); $httpRequest = $this->prophesize(HttpRequestInterface::class); $httpResponse = $this->prophesize(HttpResponseInterface::class); $httpRequestBuilder->build($request)->willReturn($httpRequest); $transport->execute($httpRequest)->willReturn($httpResponse); $resultBuilderEngine->build($request, $httpResponse)->willReturn($result); $api = new Api($httpRequestBuilder->reveal(), $transport->reveal(), $resultBuilderEngine->reveal()); $actualResult = $api->execute($request->reveal()); $this->assertEquals($result->reveal(), $actualResult); }