есть ситуация, есть метод, который я хочу протестировать, есть метод:
public function getPaidShops() : array
{
$categories = $this->getCategories();
$data = $this->getLicense($categories);
return $this->format($data);
}
всё бы хорошо, но вот тут вызывается метод getLicense который делает API call. Внутри него происходит такое:
private function getLicense(array $categories)
{
return app(APIService::class)->getLicenses($categories);
}
Я хотел бы, чтобы этот метод не лез в апишку (тем более оно вызвать ее не может из тестов, потому что выдается ошибка, что session не установлена), а хотел бы конкретно замокать этот метод. Как это можно сделать?
Как вариант, можно переписать код, чтобы в тестируемый класс в конструктор передавался APIService (а не создавался напрямую в методе), и в юнит тестах в конструктор передавать мок этого класса с данными которые подкинутся в getLicenses из дата провайдера
Но переписывать код не хотелось бы и заменять во всех местах проекта, может есть какие-то еще варианты решения?