Главная > Программирование > Как отключить кэш при тестировании Rails-приложений

Как отключить кэш при тестировании Rails-приложений

Столкнулся с проблемой в одном из разрабатываемых Rails-приложений. Интеграционные тесты в cucumber проходят по одному, но при запуске всей кучей, начинают падать в failed.

Проблема оказалась в кэшировании данных через Rails.cache. Так как, по-моему разумению, в окружении test всякое кэширование должно быть отключено, то пришлось наваять «заглушку» для кэша:

config/environments/test.rb:

config.cache_store = :dummy_store

lib/dummy_store.rb:

class DummyStore < ActiveSupport::Cache::Store

  def initialize
  end
  def read(name, options = nil)
    super
  end
  def write(name, value, options = nil)
    super
  end
  def delete(name, options = nil)
    super
  end
  def delete_matched(matcher, options = nil)
    super
  end
end

Программирование , , , ,

DeliciousFacebookDiggRSS FeedStumbleUponTwitter
  1. 16 Февраль 2009 в 22:52 | #1

    Такие вещи лучше класть в mocks/test/foo.rb

  2. 16 Февраль 2009 в 23:45 | #2

    Julik
    Чем лучше? И кто его оттуда будет вызывать? Опять же, моки и интеграционное тестирование как-то несколько не вяжутся между собой.

  3. 17 Февраль 2009 в 02:00 | #3

    Иногда вяжутся, иногда нет. Вызывать его оттуда будут dependencies, автоматом

  4. mcdba
    17 Февраль 2009 в 09:34 | #4

    а в конфиге test.rb поменять config.cache_classes = true на false разве не срабатывает ?

  5. 17 Февраль 2009 в 11:25 | #5

    mcdba
    Кэширование классов — это совсем из другой оперы. Я говорю про кэширование данных.

  1. Пока что нет уведомлений.