2013-01-26 6 views
5

मैं सोच रहा था कि किसी के पास रेडिस कुंजी की समाप्ति के बाद परीक्षण व्यवहार का एक चालाक तरीका है। मैं अनिवार्य रूप से अपने आवेदन के लिए एक छोटे से रेडिस समर्थित कैश का निर्माण कर रहा हूं और परीक्षण करना चाहता हूं कि एक लाल रंग की कुंजी समाप्त होने के बाद क्या होता है।रेडिस कुंजी समाप्ति का परीक्षण

मैं अपने परीक्षण ढांचे के रूप में rspec का उपयोग कर रहा हूं। मैंने परीक्षण के दौरान समय बदलने के लिए टाइमकॉप का उपयोग करने की कोशिश की लेकिन महसूस किया कि यह केवल परीक्षण फ्रेम कार्य को प्रभावित करेगा, न कि बाहरी रेडिस सर्वर।

मैं टीटीएल को 1 पर सेट कर सकता हूं और फिर नींद (1) का उपयोग कर सकता हूं लेकिन मैं अपने परीक्षणों में नींद नहीं लगाऊंगा।

क्या किसी के पास इसका परीक्षण करने का एक अच्छा तरीका है?

उत्तर

7

क्यों http://redis.io/commands/expire का उपयोग तुरंत कुंजी की समाप्ति के लिए नहीं करें?

+0

के लिए अनुरोध बाहर नकली यह आश्चर्यजनक है कि कैसे सरल जवाब कभी कभी सबसे मायावी है। – ajorgensen

+0

सहमत हुए। मदद करने में खुशी। –

+0

क्या आपका मतलब समाप्ति समय शून्य पर सेट करना है? – liori

0

परीक्षण वातावरण के लिए इसे ठीक करने का उचित तरीका रेडिस क्लाइंट को नकल करना है और इसे अपेक्षित मूल्य वापस करना है। मुझे विश्वास है कि रेडिस सही काम करेगा और सही तरीके से कार्यान्वित किया जाता है ताकि इस बातचीत को मजाक कर दिया जा सके, वास्तव में परीक्षा को रेडिस को हिट करने से बेहतर है।

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

या बस कुंजी

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