Если вы хотите определить, действительно ли Rails (ActiveRecord) кеширует запросы, вам не нужно писать модульный тест для них - они уже существуют и являются частью самого Rails.
Редактировать:
В этом случае я бы, вероятно, посмотрел, смогу ли я адаптировать одну из стратегий, используемых командой rails, для тестирования самого ActiveRecord.Проверьте следующий тест по моей ссылке выше:
def test_middleware_caches
mw = ActiveRecord::QueryCache.new lambda { |env|
Task.find 1
Task.find 1
assert_equal 1, ActiveRecord::Base.connection.query_cache.length
}
mw.call({})
end
Вы можете сделать что-то вроде следующего:
def check_number_of_queries
mw = ActiveRecord::QueryCache.new lambda { |env|
# Assuming this object is set up to perform all its operations already
MyObject.first.do_something_and_perform_side_operations
puts ActiveRecord::Base.connection.query_cache.length.to_s
}
end
Я не пробовал такую вещь, но это можетстоит продолжить расследование.Если вышеприведенное действительно возвращает число кэшированных запросов, ожидающих выполнения, следует заменить тривиалы на assert для вашего тестового примера.