<?php namespace Tests\Unit\MetadataResolver; use App\MetadataResolver\Resolver; use GuzzleHttp\Client; use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr7\Response; use Monolog\Handler\AbstractHandler; trait CreateMockedResolver { /** * @var Resolver */ protected $resolver; /** * @var AbstractHandler */ protected $handler; /** * @param string $resolverClass * @param string $responseText * @param array $headers * @param int $status * @return Resolver */ protected function createResolver(string $resolverClass, string $responseText, array $headers = [], int $status = 200) { if (!$this->shouldUseMock()) { $this->resolver = app()->make($resolverClass); return $this->resolver; } $headers += [ 'content-type' => 'text/html', ]; $mockResponse = new Response($status, $headers, $responseText); $this->handler = new MockHandler([$mockResponse]); $client = new Client(['handler' => HandlerStack::create($this->handler)]); $this->resolver = app()->make($resolverClass, ['client' => $client]); return $this->resolver; } protected function shouldUseMock(): bool { return (bool) env('TEST_USE_HTTP_MOCK', true); } }