使用RSpec测试一组链接的命令



我有以下代码:

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

最新更新