ruby on rails - How to unit test a module (a resque scheduler job) in rspec -
मेरे पास एक (सरलीकृत) मॉड्यूल है: (/app/jobs/checkpulse.rb)
< कोड> मॉड्यूल चेकपल्स @ आकार =: दिल की धड़कन def self.perform () Machine.all.each do | मशीन | Machine.update_columns (active_alarm: true) # updated_at एंड एंड एंड को स्पर्श नहीं करना चाहतामैं इसे रेल कंसोल में उपयोग कर सकता हूं और यह सभी मशीनों को अपेक्षित रूप से बदलता है। < P> मैं इसे परीक्षण करने के लिए एक युक्ति लिखने की कोशिश कर रहा हूं: (/spec/jobs/checkpulse_spec.rb)
की आवश्यकता होती है "spec_helper" need_relative '../../app/jobs/checkpulse "कारखानेगर्ल.क्रेते (: मशीन, उपयोगकर्ता: उपयोगकर्ता, दिल की धड़कन: समय समाप्त: 5)}" यह मशीन को बदलना चाहिए " अलार्म मोड "चेकपल्स करते हैं। टेपरफ़ॉर्म (मशीन.एक्टिव_अलार्म) की उम्मीद है। be_true end end के लिए
यह परीक्षण हर बार विफल रहता है मैंने चेकपल्स मॉड्यूल के अंदर डालकर इसे जांचने के लिए उपयोग किया है और इसमें मॉड्यूल के अंदर अपेक्षित व्यवहार है, लेकिन जब मॉड्यूल से लौटा जाता है, तो मशीन बदल नहीं जाती है।
मैंने कोशिश की है, लेकिन यह या तो काम नहीं कर सकता मैंने यह भी देखने के लिए कि क्या यह एक पर्यावरण समस्या थी, चलने वाले रेल को कंसोल चलाने की भी कोशिश की, लेकिन मॉड्यूल ने वहां भी ठीक काम किया।
मैंने पूरे दिन इस पर बिताया है, कृपया मदद!
सबसे पहले, रूबी और amp; रेल सम्मेलनों यदि आप मॉड्यूल
चेकपल्स कॉल करते हैं तो उसका फ़ाइल नाम होना चाहिए
check_pulse.rb । यह आपको
need_relative से बचने में मदद करेगा दूसरा, युक्ति और मॉड्यूल में आप विभिन्न रूबी ऑब्जेक्ट्स के साथ इंटरैक्ट करते हैं जो दोनों डेटाबेस में एक ही पंक्ति में लिखते हैं। और अगर आप एक ऑब्जेक्ट को अपडेट करते हैं तो दूसरा सिंक्रोनस में अपडेट नहीं किया जाएगा।
machine.reload को अपने फोन पर कॉल करके मैन्युअल रूप से इसे फिर से लोड करना होगा।
अपने कोड के लिए कुछ युक्तियां भी:
- कभी भी
all.each । अगर आपके पास आपके डेटाबेस में एक 2k + रिकॉर्ड है तो यह फंस जाएगा सभी डेटाबेस रिकॉर्ड्स को फिर से चलाने के लिए प्रत्येक रिकॉर्ड को लोड करने और अपडेट करने के बजाय
find_each
- का उपयोग करें, आप
update_all - & gt;
Machine.update_all (: column_1 = & gt; value_1,: column_2 = & gt; value_3)
- तर्कों के बिना तरीकों में गोल कोष्ठक से बचें
Comments
Post a Comment