Задать вопрос
@JeanPaulBelmondo

Laravel. Как тестировать кэширование?

Есть API, например

GET api/products

Доступ из теста я делаю два запроса к базе.
Есть ли способ протестировать то, что данные были в базы были получены только один раз, а второй раз из кэша?
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 3
Если кэшируются не сырые данные из базы, а данные сформированные для ответа - можно добавить кастомный заголовок информирующий о работающем кешировании. Какой-нибудь Age к примеру.

Это в том числе позволит писать функциональные тесты без необходимости мокать кэш, и при этом понимать работает ли он.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Класс, который реализует эту логику принимает объект работы с БД и объект работы с кэшем в качестве зависимостей.
В тесте вы вместо зависимостей передаёте моки и описываете для них требования по вызванным методам.
Всё - в проекте хорошая архитектура, тесты писать легко и приятно.
Ответ написан
Комментировать
@MadridianFox
Web-программист, многостаночник
Многие фасады в ларавеле позволяют получить мок или задавать ожидания прямо через фасад.
В документации пример как раз с кешем.
https://laravel.com/docs/10.x/mocking#mocking-facades
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы