我有以下代码:
Rails.cache.redis.ping == "PONG"
我正试图编写一个规范来存根这个响应,这样我就可以控制它在测试中返回的内容。然而,通常简单的期望在这里似乎不起作用,因为它是一个方法链。
如何在RSpec中测试此代码?
Rails.cache.redis
返回Redis
类的对象,并且ping
方法基本上是在该类的实例上调用的。以下是如何存根ping
方法。
allow_any_instance_of(Redis).to receive(:ping).and_return(DESIRED_MOCK_VALUE)
您可以使用before
块并截断消息链
before do
allow(Rails).to receive_message_chain(:cache, :redis, :ping).and_return("PONG")
end