1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00

Add Use Specific Cache Store In A Single Test as an RSpec til

This commit is contained in:
jbranchaud
2022-01-25 10:14:24 -06:00
parent 05b7c56259
commit 53f82df5b1
2 changed files with 43 additions and 1 deletions

View File

@@ -0,0 +1,41 @@
# Use Specific Cache Store In A Single Test
It is generally recommended to use `:null_store` as the default cache store
across your test suite. This is defined in `config/environments/test.rb`.
```ruby
config.cache_store = :null_store
```
This generally simplifies tests by avoiding confusing stateful scenarios.
If there is a test where you want to observe specific caching behavior, then
you'll need to temporarily swap that for another store.
One way to do that is by mocking the cache with `MemoryStore` in a before
block.
```ruby
describe '#caching_feature' do
# use MemoryStore cache for these tests
before do
allow(Rails)
.to receive(:cache)
.and_return(ActiveSupport::Cache::MemoryStore.new)
end
it 'does caching' do
thing = Thing.caching_feature(1)
expect(thing.value).to eq true
thing.update(value: false)
thing = Thing.caching_feature(1)
expect(thing.value).to eq true
end
end
```
[source](https://makandracards.com/makandra/46189-how-to-rails-cache-for-individual-rspec-tests)