测试redis密钥到期

时间:2013-01-26 20:11:11

标签: ruby-on-rails rspec redis

我想知道在redis密钥到期后是否有人有一种聪明的方法来测试行为。我本质上是为我的应用程序构建一个小的redis支持的缓存,并希望测试redis密钥设置为过期后会发生什么。

我使用rspec作为我的测试框架。我尝试使用Timecop来改变测试期间的时间,但意识到它只会影响测试框架工作,而不会影响外部redis服务器。

我可以将TTL设置为1,然后使用睡眠(1),但我宁愿不在我的测试中引入睡眠。

有没有人有一个很好的测试方法?

2 个答案:

答案 0 :(得分:8)

为什么不立即使用http://redis.io/commands/expire来过期密钥?

答案 1 :(得分:0)

为测试环境修复此问题的正确方法是模拟redis客户端并让它返回预期值。我有信心redis会做正确的事情而且是正确实现的,因此嘲笑这种交互可能比让测试实际上达到redis更好。

redis_client.should_recieve(:ttl).with(key).then_return(-1)

或只是模拟了对密钥的请求

redis_client.should_recieve(:get).with(key).then_return(nil)