Rails / RSpec switches cache for one test

So, in my application, I can disable the cache for all tests, which would be ideal, but apparently there are a number of outdated tests that rely on the functionality of the cache. Is there a way to enable Rails cache for a single RSpec test?

Sort of:

before(:each) do @cache_setting = Rails.cache.null_cache Rails.cache.null_cache = true end after(:each) do Rails.cache.null_cache = @cache_setting end it 'does not hit the cache' do ... end 
+6
source share
1 answer

in spec_helper.rb

 RSpec.configure do |config| config.before(:example, disable_cache: true) do allow(Rails).to receive(:cache).and_return(ActiveSupport::Cache::NullStore.new) end config.after(:example, disable_cache: true) do allow(Rails).to receive(:cache).and_call_original end end 

in xxx_spec.rb

 RSpec.describe "a group without matching metadata" do it "does not run the hook" do puts Rails.cache.class end it "runs the hook for a single example with matching metadata", disable_cache: true do puts Rails.cache.class end end 

https://www.relishapp.com/rspec/rspec-core/docs/hooks/filters

+6
source

All Articles