mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
42 lines
1.1 KiB
Markdown
42 lines
1.1 KiB
Markdown
# 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
|
|
```
|
|
|
|
[One source](https://stackoverflow.com/a/31932795/535590) and [another](https://makandracards.com/makandra/46189-how-to-rails-cache-for-individual-rspec-tests)
|