新註冊的用戶到我的小應用程序必須經過管理員(我)的批准,然後才能訪問該網站。我成功地在用戶模型中生成了一個after_create :send_admin_email
開發這樣的電子郵件,這非常棒。我的問題是我在測試期間(使用FactoryGirl)生成了多個用戶,並且每個創建的測試用戶發送了一封真正的電子郵件。運行我的測試就像在一月份澆糖漿,我必須刪除發送到我的收件箱的數百封電子郵件。我該如何解決這個問題?ActionMailer以測試模式發送真實電子郵件! - 如何關閉?
Action Mailer BasicsRails Guides告訴我:「默認情況下,Action Mailer不會在測試環境中發送電子郵件,它們只會添加到ActionMailer :: Base.deliveries數組中。」
而且,在config/environments/test.rb
我有:
config.action_mailer.delivery_method = :test
這是除了在config/environment.rb
有:
# Configuration for using SendGrid on Heroku
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => 'app[my app number]@heroku.com',
:password => '[something super secret]',
:domain => '[let's get this party started!.com]',
:enable_starttls_auto => true
}
ActionMailer::Base.delivery_method = :smtp
我敢肯定,我失去了一些東西簡單和基本的。我搜索了周圍,相關的問題和帖子處理如何測試ActionMailer實際發送的電子郵件。
謙虛的態度提前任何想法或幫助。
附錄:以下的答案在Is it possible to turn off ActionMailer emails when cucumber testing is happening on development?發現了類似的問題,我是能夠阻止電子郵件發送瘋狂。不過,我不得不將ActionMailer::Base.delivery_method = :test
添加到幾個rspec文件。有什麼辦法可以讓全球關閉?任何人對發生了什麼有什麼想法?
有了所有這些電子郵件,我超過了發送電網允許的200 /天。我發現[如何編寫實際上不使用Sendgrid的功能?](https://groups.google.com/group/heroku/browse_thread/thread/7a4044f299ccf1fc/a0d687041fd97389?pli=1),其中說'ActionMailer :: Base.delivery_method =:config/environment.rb中的smtp'正在覆蓋'config/environments/test.rb中的'config.action_mailer.delivery_method =:test'我已經移動了'ActionMailer :: Base.delivery_method =:smtp'轉換成'config/environments/development.rb'和'config/environments/production.rb'這可能工作。明天更新。 – BenU