Как проверить кеширование фрагментов рельсов с помощью rSpec? - PullRequest
2 голосов
/ 19 февраля 2012

Я использую фрагменты кешей довольно широко и столкнулся с несколькими ошибками, когда неожиданные объекты попали в кеш и / или фрагмент не истек, как планировалось изначально.

Я думаю, что это будет основной кандидат на спецификации запроса, но я не уверен в следующем:

  1. Что нужно сделать, чтобы смоделировать сценарий, когда кэш запускается (эффективно).
  2. Какие корректировки необходимо выполнить в тестовой среде для обеспечения кэширования.
  3. Сохранится ли кэш в нескольких спецификациях или rspec автоматически сбросит кэш между каждой спецификацией?
  4. Самое главное, есть ли способ определить, обслуживался ли кеш на самом деле?

1 Ответ

2 голосов
/ 19 февраля 2012
  1. Выполнение двух запросов в одном и том же тестовом примере было бы наиболее реалистичным способом.
  2. Вам потребуется включить кэширование в тестовой среде, по умолчанию оно включено только в рабочей среде. В идеале не в каждом тестовом наборе должно быть включено кэширование, поэтому вам нужно включить / выключить его до / после набора. Смотрите этот вопрос: Опционально тестирование кэширования в функциональных тестах Rails 3
  3. Это зависит от уровня хранения фрагментов кэша, но Rails.cache.clear должен быть достаточно умен. Я не думаю, что есть какой-то случай, когда вы хотите, чтобы кэш сохранялся в разных спецификациях, поскольку загрязнение может привести к путанице.
  4. Если ваш фрагмент выполняет вызов базы данных, заглушите соединение с базой данных в ваших тестах, вернув ложный результат в первый раз и вызвав исключение во второй раз. Это может быть распространено на другие медленные вызовы (например, сетевой запрос).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...