首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试redis密钥过期时间

测试redis密钥过期时间
EN

Stack Overflow用户
提问于 2013-01-27 04:11:11
回答 2查看 6.4K关注 0票数 7

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

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

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

有没有人有好的方法来测试这个?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-27 09:43:49

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

票数 8
EN

Stack Overflow用户

发布于 2014-04-11 00:40:33

为测试环境修复此问题的正确方法是模拟redis客户端,并使其返回期望值。我有信心redis会做正确的事情,并且被正确地实现,所以模拟这种交互可能比让测试真正击中redis要好。

代码语言:javascript
复制
redis_client.should_receive(:ttl).with(key).then_return(-1)

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

代码语言:javascript
复制
redis_client.should_receive(:get).with(key).then_return(nil)

使用较新的RSpecs版本,

代码语言:javascript
复制
expect(redis_client).to receive(:get).with(key).and_return(value)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14541111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档