2010-02-10 13 views
5

यह मेरे पास है:मैं rspec का उपयोग कर फ़ाइल के अस्तित्व को नकली/नकली कैसे बना सकता हूं?

it "should be able to get a valid directory path" do 
    @asset.some_file_path.should == "/something/test.jpg" 
end 

समस्या यह है कि अगर कोई मौजूदा फ़ाइल नहीं है तो कुछ_file_path "/not_here_yet.jpg" लौटाता है।

def some_file_path 
    if File.exists(self.my_image_path) 
    return my_image_path 
    else 
    return "/not_here_yet.jpg 
    end 
end 

मैं वास्तव में अपने परीक्षणों में एक नई फाइल नहीं बनाना चाहता हूं। क्या फाइल के अस्तित्व को नकली बनाने का कोई तरीका है?

मैं कुछ पंक्तियों में कुछ सोच रहा हूं:

it "should be able to get a valid directory path" do 
    AwesomeFakeFileCreator.create(@asset.my_image_path) 
    @asset.some_file_path.should == "/something/test.jpg" 
end 

क्या यह संभव है? मैं ऐसी चीज कैसे कर सकता हूं?

संपादित करें: मैंने FakeFS पर थोड़ा सा देखा लेकिन मुझे यकीन नहीं है कि यह मेरे प्रश्न का उत्तर

उत्तर

6

आप

it "should be able to get a valid directory path" do 
    File.stub!(:exists?).and_return(true) 
    @asset.stub!(:my_image_path).and_return("/something/test.jpg") 
    @asset.some_file_path.should == "/something/test.jpg" 
end 
+0

क्या आप यह बता सकते हैं कि यह क्या कर रहा है? – marcgg

+1

पहली पंक्ति यह बता रही है कि फ़ाइल मौजूद है और दूसरी पंक्ति संपत्ति वस्तु पर my_image_path विधि को दबा रही है और फ़ाइल पथ लौटाती है, जो कि आपकी कुछ_फाइल_पैथ विधि उस मामले में वापस आ जाएगी, यानी पूरे spec उदाहरण के बारे में है। संक्षेप में, यदि यह मौजूद है तो पथ वापस कर दें। – nas

+0

नहीं कि आपको मुझे खुश या कुछ भी रखना है - मैंने सवाल नहीं पूछा - लेकिन मुझे डर है कि मुझे यह समझ में नहीं आया। – Shadowfirebird

-2

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

जैसा कि मैं इसे समझता हूं, आपको केवल दो स्थितियों का परीक्षण करने की आवश्यकता है: फ़ाइल मौजूद है, और फ़ाइल मौजूद नहीं है?

गैर-अस्तित्व का परीक्षण करना काफी आसान है: एक my_image_path के साथ एक संपत्ति बनाएं जो मौजूद नहीं है, और फ़ंक्शन रिटर्न '/not_here_yet.jpg' जांचें।

निश्चित रूप से आप उसी मामले में अन्य मामले का परीक्षण कर सकते हैं? एक .jpg एक्सटेंशन के साथ एक खाली फ़ाइल बनाएं, फिर एक एसेट जो इसे इंगित करती है, और जांचें कि फ़ंक्शन सही नाम देता है?

+0

है, तो मैं फ्लाई पर फाइलें नहीं बनाना चाहता हूं। टेस्ट धीमे हो जाएंगे और मुझे फ़ाइल को बनाने/हटाने के लिए अतिरिक्त सावधान रहना होगा। – marcgg

+0

:) मैंने कहा था कि यह शायद एक अनुपयोगी जवाब होगा ... – Shadowfirebird

0

शायद आप अपनी फ़ाइल के सही पथ के साथ नकली बना सकते हैं। प्रत्येक फ़ाइल के लिए नकली है जिसे आप पथ

it "should be able to get a valid directory path" do 
    File.stub!(:exists?).with("my_image_path.jpg").and_return("my_image_path.jpg") 
    @asset.some_file_path.should == "my_image_path.jpg" 
    end 
संबंधित मुद्दे

 संबंधित मुद्दे