2011-03-15 13 views
8

असल में मैं एक सरणी बनाना चाहता हूं और फिर इसे अपने चश्मा के दौरान जोड़ना चाहता हूं और अंततः इसे उपयोगकर्ता को प्रदर्शित करना चाहता हूं। मैं कुछ कामकाज के साथ आ सकता हूं लेकिन आदर्श रूप में मैं निम्नलिखित करना चाहता हूं।आरएसपीसी 2 पहले (: सुइट) परिवर्तनीय दायरा

RSpec.configure do |config| 
    config.before(:suite) { @array_of_stuff ||= [] } 
    config.after(:suite) { process_and_print(@array_of_stuff) } 
end 

def process_and_print(array) 
    # do stuff 
end 

दुर्भाग्य से नहीं बल्कि आश्चर्यजनक रूप से @array_of_stuff नहीं दायरे में, है और मेरा चश्मा से में संलग्न नहीं किया जा सकता है के विपरीत अगर एक से पहले में सेटअप (: सभी) ब्लॉक।

क्या कुछ आरएसपीईसी प्रदान करता है जो इस तरह से कुछ सरल बना देगा?

उत्तर

9

यह शायद इस के लिए गया था, लेकिन आप custom settings उपयोग कर सकते हैं:

spec_helper:

RSpec.configure do |config| 
    config.add_setting :my_array 
    config.before(:suite) { RSpec.configuration.my_array = [] } 
end 

उदाहरण कल्पना:

it "should do something" do 
    RSpec.configuration.my_array << "some value" 
    RSpec.configuration.my_array.length.should eql(1) 
end 
+0

बहुत सराहना की। – lebreeze

+7

'add_setting' निश्चित रूप से _not_ के लिए इरादा है! क्यों न केवल वैश्विक चर का उपयोग करें? मुझे लगता है कि कोड स्कैन करते समय यह और अधिक स्पष्ट होगा कि यह क्या है और स्पॉट करना आसान है। –

+0

निश्चित रूप से थोड़ा सा हैकी, लेकिन पूरी तरह से काम करता है। ऐसा करने का कोई और तरीका? ग्लोबल्स का उपयोग संदेश में परिणाम: चेतावनी: क्लास परिवर्तनीय पहुंच को अपूर्ण से – justingordon

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