मैं एक ActionMailer
वर्गActionMailer विधि मॉड्यूल में नहीं के बराबर लौटने जबकि rspec परीक्षण
class UserMailer < ActionMailer::Base
default from: "[email protected]"
def submission_reminder user
@user = user
mail :to => user.email, :subject => "Your timesheet needs to be submitted!"
end
end
है, तो मैं फोन UserMailer.submission_reminder(current_user)
विकास में यह मुझे देता है एक Mail::Message
वस्तु की उम्मीद की तरह कॉल।
जहां इस विधि कहा जाता है अपने आवेदन में जगह एक मॉड्यूल मैं lib फ़ोल्डर में है में है:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
जब मैं विकास में TimesheetSubmissionNotifier.send_submission_reminders
फोन, UserMailer.submission_remind (उपयोगकर्ता) मेल संदेश देता है और डिलीवरी कहा जाता है, सबकुछ काम करता है जैसा इसे करना चाहिए।
समस्या यह है कि जब मैं TimesheetSubmissionNotifier.send_submission_reminders
को एक आरएसपीईसी परीक्षण के माध्यम से कॉल करता हूं, UserMailer.submission_reminder(user)
शून्य देता है।
अगर मैं सीधे एक आरएसपीईसी परीक्षण से UserMailer.submission_reminder(user)
पर कॉल करता हूं, तो यह अपेक्षित मेलर संदेश देता है।
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
कोई भी विचार
क्यों विधि लौटा रहा है नहीं के बराबर:
यहाँ केवल मेरी config/पर्यावरण/test.rb में ActionMailer से संबंधित लाइनें हैं?
जब आप किसी आरएसपीईसी परीक्षण कार्यों से सीधे 'UserMailer.submission_reminder (उपयोगकर्ता)' को कॉल करते हुए कहते हैं, तो आप विधि में पास ** उपयोगकर्ता ** ऑब्जेक्ट को कैसे प्रारंभ कर रहे हैं? आप इसे उपयोगकर्ता तालिका से प्राप्त करते हैं या आप इसे फैक्ट्री आदि के साथ बनाते हैं? – Zheileman