2013-01-26 15 views
5

私は、誰かがredisキーの有効期限が切れた後で動作をテストする巧妙な方法があるのだろうかと思っていました。私は本質的に私のアプリケーションのための小さなredisバックアップキャッシュを構築しており、redisキーが期限切れに設定された後に何が起こるかをテストしたいと思います。redisキーの有効期限をテストする

私はテストフレームワークとしてrspecを使用しています。テスト中にTimecopを使用して時間を変更しようとしましたが、外部のRedisサーバーではなく、テストフレームの作業にのみ影響することに気付きました。

私はTTLを1に設定してからsleep(1)を使うことができますが、自分のテストにスリープ状態を導入しないでください。

これをテストする良い方法はありますか?

答えて

7

なぜすぐにhttp://redis.io/commands/expireを使用してキーを期限切れにするのですか?

+0

のためにそれは最も簡単な答えは、時には最もとらえどころのないですか驚くべきことだ要求をモック。 – ajorgensen

+0

合意。喜んで助けてください。 –

+0

有効期限をゼロに設定することを意味しますか? – liori

0

これをテスト環境で修正する適切な方法は、redisクライアントをモックアウトして期待値を返すことです。私は自信を持ってレディスが正しいことを行い、正しく実装されているので、このインタラクションを嘲笑することはおそらくテストを実際にレディにするよりも良いでしょう。

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

か、単にキー

redis_client.should_recieve(:get).with(key).then_return(nil) 
関連する問題