. * */ namespace Friendica\Test; use Friendica\DI; use Friendica\Network\HTTPClient; use Friendica\Network\IHTTPClient; use GuzzleHttp\Client; use GuzzleHttp\HandlerStack; use mattwright\URLResolver; /** * This class mocks some DICE dependencies because they're not direct usable for test environments * (Like fetching data from external endpoints) */ trait DiceTestTrait { /** * Handler for mocking requests anywhere for testing purpose * * @var HandlerStack */ protected static $httpRequestHandler; protected static function setUpDice(): void { if (!empty(self::$httpRequestHandler) && self::$httpRequestHandler instanceof HandlerStack) { return; } self::$httpRequestHandler = HandlerStack::create(); $client = new Client(['handler' => self::$httpRequestHandler]); $resolver = \Mockery::mock(URLResolver::class); $httpClient = new HTTPClient(DI::logger(), DI::profiler(), $client, $resolver); $dice = DI::getDice(); $newDice = \Mockery::mock($dice)->makePartial(); $newDice->shouldReceive('create')->with(IHTTPClient::class)->andReturn($httpClient); DI::init($newDice); } protected function tearDown() : void { \Mockery::close(); parent::tearDown(); } }