0
我寫一個測試肚裏,並得到電子郵件,然後一個工人做了他們:存根的Net :: POP3.start
Net::POP3.start('pop.gmail.com', 995, "xxx", "xxxx") do |pop|
if pop.mails.empty?
log "#{Time.now} No mail."
else
pop.each_mail do |mail|
#do something
end
end
end
什麼是這樣,這將存根Net::POP3.start
的最佳方式實際上應該返回相似的數據嗎?
感謝
迪基
編輯:
作業的其餘/在#do something
填充看起來有點像這樣:
Net::POP3.start('pop.gmail.com', 995, "xxx", "xxxx") do |pop|
if pop.mails.empty?
log "#{Time.now} No mail."
else
pop.each_mail do |mail|
parse_mail mail.pop
end
end
end
def parse_mail(raw_email)
email = Mail.new raw_email
email.attachments
email.from
email.subject
end
我想出瞭解決的方法是(這可能會根據您的需求有所不同):
Net::POP3.stub(:start).and_yield Net::POP3.new("a test string")
Net::POP3.any_instance.stub(:mails).and_return [Net::POPMail.new("test","test","test","test")]
Net::POPMail.any_instance.stub(:pop).and_return("a raw email string")
我不太喜歡。
使用@SteveTurczyn正在使用的一些技術重構它。
感謝您的答覆。我可能應該更清楚我對電子郵件所做的工作。我正在處理電子郵件的附件。最後,我的解決方案與您的解決方案不太相似。儘管我更喜歡你做到這一點的方式。我發佈我的解決方案,然後更新解決方案 – DickieBoy