Вопрос возможно не очень корректно указан, но постараюсь объяснить.
Есть такой код:
spoiler
public function extractStoreMainTheme(ShopModel $shop): void
{
$themesResponse = $shop->api()->rest('GET', '/admin/themes.json');
if (!$themesResponse['errors'] && isset($themesResponse['body']['themes'])) {
$themes = $themesResponse['body']['themes']->toArray();
$key = array_search($this::MAIN_ROLE, array_column($themes, $this::THEME_FIELD));
$this->mainTheme = MainTheme::fromNative($themes[$key]);
$this->extractThemeAssets($shop);
} else {
$this->mainTheme = MainTheme::fromNative([]);
}
}
На входе у нас Eloquent модель Laravel - $shop.
И далее проблема, так как от магазина идёт запрос на внешний сервис, а там, конечно же, не тот ответ, который мне нужен.
Можно как-то подменить ответ от "$shop->api()->rest('GET', '/admin/themes.json')" ?
Попробовал создать мок объект, или заглушку, как-то не очень получилось.
Да и как в целом такое тестировать? я имею виду классы с приватными полями и объекты у которых вложенные объекты имеют функции)