में आरएसपीसी परीक्षणों के बीच कक्षा चर को कैसे साफ़ कर सकता हूं मेरे पास निम्न श्रेणी है: मैं यह सुनिश्चित करना चाहता हूं कि कक्षा यूआरएल केवल सभी उदाहरणों के लिए सेट हो।मैं रूबी
class DataFactory
@@url = nil
def initialize()
begin
if @@url.nil?
Rails.logger.debug "Setting url"
@@url = MY_CONFIG["my value"]
end
rescue Exception
raise DataFactoryError, "Error!"
end
end
end
मैं दो परीक्षणों है:
it "should log a message" do
APP_CONFIG = {"my value" => "test"}
Rails.stub(:logger).and_return(logger_mock)
logger_mock.should_receive(:debug).with "Setting url"
t = DataFactory.new
t = nil
end
it "should throw an exception" do
APP_CONFIG = nil
expect {
DataFactory.new
}.to raise_error(DataFactoryError, /Error!/)
end
समस्या दूसरे टेस्ट @@ यूआरएल वर्ग चर के रूप में एक अपवाद कभी नहीं फेंकता अभी भी पहले टेस्ट जब दूसरे टेस्ट रन से सेट कर दिया जाता है। भले ही मैंने पहले टेस्ट कचरा संग्रह के अंत में शून्य के उदाहरण को देखा है, दूसरे टेस्ट रन से पहले स्मृति को मंजूरी नहीं दी गई है:
कोई भी विचार बहुत अच्छा होगा! मैंने सुना है कि आप संभवतः कक्षा.न्यू का उपयोग कर सकते हैं लेकिन मुझे यकीन नहीं है कि इस बारे में कैसे जाना है।
नहीं वास्तव में आपकी समस्या से संबंधित, लेकिन: रूबी में @@ कक्षा चर का उपयोग कभी नहीं करें। इसके बजाय @class इंस्टेंस चर का प्रयोग करें। वे कहीं अधिक अनुमानित व्यवहार करते हैं। ** NameError: अप्रारंभीकृत वर्ग चर @@ वस्तु में यूआरएल ** मैं का उपयोग कर काम करने के लिए मिल गया: 'से पहले (: प्रत्येक) DataFactory.class_eval {class_variable_set कर –