Есть класс ServiceApi.php - в его конструкторе создается guzzle клиент с дефолтными опциями:
$this->client = new Client($options);
в нем же есть метод:
public function fetch()
{
return $this->client->get('http://......')->getBody()->getContents();
}
И есть другой класс скажем ServiceUser.php - в нем есть метод который использует класс ServiceApi:
public function fetchFromApi()
{
return (new ServiceApi())->fetch();
}
в тесте я хочу что бы при вызове (new ServiceUser())->fetchFromApi() - клиент guzzle не обращался к реальному апи, а я заранее явно определил в тесте весь его ответ.
Пробовал мокать класс ServiceApi, но это работает только внутри теста, когда вызов происходит уже из ServiceUser то вызывается реальный метод fetch()
Такое вообще возможно провернуть?
Или же я пытаюсь тестировать то что не должен тестировать таким способом или изначально архитектура не подходящие под такое тестирование?