मैं कुछ Rspec कोई है जो कंपनी को छोड़ दिया द्वारा लिखित के माध्यम से पढ़ रहा हूँ में Class.new का लाभ है। मैं इस लाइन के बारे में सोच रहा हूँ:क्या इस Rspec
let(:mailer_class) { Class.new(AxeMailer) }
let(:mailer) { mailer_class.new }
describe '#check' do
before do
mailer_class.username 'username'
mailer.from '[email protected]'
mailer.subject 'subject'
end
subject { lambda { mailer.send(:check) } }
यह इस वर्ग के परीक्षण कर रहा है:
class AxeMailer < AbstractController::Base
def self.controller_path
@controller_path ||= name.sub(/Mailer$/, '').underscore
end
मैं इस और let(:mailer_class) { AxeMailer }
के बीच का अंतर जानना चाहते हैं।
मैं इस पूछना क्योंकि वर्तमान में जब मैं परीक्षण चलाने के लिए, यह शिकायत name
नहीं के बराबर है। लेकिन अगर मैंने इसे बदल दिया, तो यह ठीक से परीक्षण करेगा।
मैं इस मुद्दे रेल 3.2 उपयोग करने के बाद शुरू कर दिया लगता है, और मुझे लगता है कि name
AbstractController :: बेस से विरासत में मिली है।
यह कंसोल (अर्थात् यह आरईपीसी विशिष्ट नहीं है) में समान है, मैं बिना किसी त्रुटि के AxeMailer.name
कर सकता हूं, लेकिन यदि मैं Class.new(AxeMailer)
करता हूं तो समस्या है।
मेरे प्रश्न हैं:
- वहाँ
Class.new(AxeMailer)
AxeMailer
से अधिक - वहाँ एक समस्या है, तो मैं सिर्फ यह परिवर्तन है उपयोग करने के लिए एक कारण है?
- वहाँ एक रास्ता कल्पना को बदलने और इसे पारित नहीं कर सकता है?
क्या आप 'let' विधि के अतिरिक्त परीक्षण कोड पोस्ट कर सकते हैं? इससे हमें यह तय करने में मदद मिलेगी कि यह इस तरह क्यों लिखा गया था। –
बस कुछ जोड़ा, क्या वह पर्याप्त होगा? – lulalala
मेरे लिए, कोई कारण नहीं है। – shingara