2013-01-26 17 views
5

Mi chiedevo se qualcuno ha un modo intelligente di testare il comportamento dopo la scadenza di un tasto redis. Sto essenzialmente costruendo una piccola cache con redis redis per la mia applicazione e vorrei testare cosa succede dopo che una chiave redis è scaduta.Test scadenza scadenza tasto rosso

Sto usando rspec come framework di test. Ho provato a usare Timecop per cambiare il tempo durante i test, ma ho capito che avrebbe influenzato solo il funzionamento del frame di test e non il server redis esterno.

Posso impostare il TTL su 1 e quindi utilizzare un sleep (1), ma preferirei non introdurre sleeps nei miei test.

Qualcuno ha un buon modo di testare questo?

risposta

7

Perché non utilizzare http://redis.io/commands/expire per scadere la chiave subito?

+0

E 'sorprendente come la risposta più semplice a volte è la più elusiva. – ajorgensen

+0

concordato. Felice di aiutare. –

+0

Intendi impostare il tempo di scadenza a zero? – liori

0

Il modo corretto per risolvere questo problema per l'ambiente di test è quello di prendere in giro il client redis e restituire il valore previsto. Ho la certezza che i redis faranno la cosa giusta e che siano implementati correttamente, quindi è meglio prendere in giro questa interazione piuttosto che lasciare che il test colpisca effettivamente i redis.

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

o solo deridere la richiesta di chiave

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