Можно ли заменить частный сервис в контейнере DI? Мне нужно сделать это в моей тестовой среде, чтобы я мог запускать интеграционные тесты, но по-прежнему имитировать HTTP-вызовы внешних API.
Например, у меня есть этот код, который устанавливает макет для HttpClientInterface:
$response = new MockResponse('"some json body"');
$client = new MockHttpClient([$response]);
self::$container->set(HttpClientInterface::class, $client);
// Execute controller / command and perform assertions
// ...
Я уже пытался определить HttpClientInterface как publi c сервис для моей тестовой среды с приведенным ниже конфигом, но это не работает, так как он не создается (это интерфейс).
services:
Symfony\Contracts\HttpClient\HttpClientInterface:
public: true