I have the following code:
Rails.cache.redis.ping == "PONG"
and I'm trying to write a spec to stub this response so that I can control what it returns in tests. However, usual simple expectations don't seem to work here as it's a method chain.
How would I test this code in RSpec?
CodePudding user response:
Rails.cache.redis returns an object of Redis class and the ping method is basically being called on an instance of the class.
Here is how you can stub the ping method.
allow_any_instance_of(Redis).to receive(:ping).and_return(DESIRED_MOCK_VALUE)
CodePudding user response:
You can use before block and stub the chain of messages
before do
allow(Rails).to receive_message_chain(:cache, :redis, :ping).and_return("PONG")
end
