2013-01-26 17 views
5

Zastanawiam się, czy ktoś ma sprytny sposób testowania zachowania po wygaśnięciu klucza redis. Zasadniczo buduję małą pamięć podręczną wspieraną przez Redis dla mojej aplikacji i chciałbym przetestować, co stanie się po wygaśnięciu klucza redis.Testowanie ważności klucza redis

Używam rspec jako mojej platformy testowej. Próbowałem użyć Timecop, aby zmienić czas podczas testowania, ale zdałem sobie sprawę, że wpłynie to tylko na pracę ramek testowych, a nie na zewnętrzny serwer redis.

Mogę ustawić TTL na 1, a następnie użyć funkcji uśpienia (1), ale wolałbym nie wprowadzać w stan uśpienia do moich testów.

Czy ktoś ma dobry sposób na przetestowanie tego?

Odpowiedz

7

Dlaczego nie używać http://redis.io/commands/expire, aby wygasić klucz natychmiast?

+0

To niesamowite, jak najprostsza odpowiedź jest czasami najbardziej nieuchwytny. – ajorgensen

+0

Uzgodnione. Miło, że mogłem pomóc. –

+0

Czy chcesz ustawić czas wygaśnięcia na zero? – liori

0

Właściwym sposobem rozwiązania tego problemu w środowisku testowym jest wyszukanie klienta redis i zwrócenie oczekiwanej wartości. Mam pewność, że Redis zrobi to, co trzeba i zostanie poprawnie zaimplementowane, więc kpina z tej interakcji jest prawdopodobnie lepsza niż pozwolenie, aby test faktycznie trafił w redis.

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

lub po prostu wyśmiewać się z wnioskiem o kluczowej

redis_client.should_recieve(:get).with(key).then_return(nil) 
Powiązane problemy