ruby-on-rails-3 - ActionMailer 在测试模式下发送真实的电子邮件! - 如何关闭?

标签 ruby-on-rails-3 actionmailer rspec-rails sendgrid

新注册我的小应用程序的用户必须经过管理员(我)的批准才能访问该网站。我已经在用户模型中使用 after_create :send_admin_email 成功生成了这样的电子邮件,效果非常好。我的问题是,我在测试期间生成多个用户(使用 FactoryGirl),并且创建的每个测试用户都会发送一封真实的电子邮件。运行我的测试就像在一月份倒糖蜜一样,我必须删除发送到我的收件箱的数百封电子邮件。我该如何关闭它?

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 文件中。有什么办法可以在全局范围内关闭它吗?有人对发生的事情有什么想法吗?

最佳答案

所以我已经弄清楚了。 config/environment.rb 中的 ActionMailer::Base.delivery_method = :smtp 行会覆盖 config/environments/test.rb 中的 ActionMailer::Base.delivery_method = :test

所以,删除该行,ActionMailer::Base.delivery_method = :smtp' 从 config/environment.rb 并将其放置在 config/environments/development.rb 中。 这允许您将 ActionMailer::Base.delivery_method = :test 放置在 config/environments/test.rb 中,并将您想要的版本放置在 config/environments/development.rb 中。当我使用 Faker 填充数据库并将其更改为 smtp 时,我制作了development.rb :test,因此我确信发送了真实的电子邮件作为额外检查。

注意:您必须重新启动服务器才能使这些更改生效。

另一条注释:Heroku's current SendGrid Instructions将 SendGrid Heroku 配置代码放入新的 config/initializers/mail.rb 文件中,这可能需要删除其最后一行并将所需的版本放入每个 config/environments/[生产.rb,development.rb,test.rb]

关于ruby-on-rails-3 - ActionMailer 在测试模式下发送真实的电子邮件! - 如何关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961982/

相关文章:

ruby-on-rails-3 - 如何使用之前的 Git check out 、在 Rails 3 中使用正确的文件和迁移干净地重新启动

ruby-on-rails - 普通项目上的 RSpec MustBeConfiguredBeforeExampleGroupsError

json - 使用 RSpec 测试 jbuilder View 时如何分配变量

ruby-on-rails - Errno::ENOENT - 没有这样的文件或目录@rb_sysopen

ruby-on-rails - 我可以在不实际发送电子邮件的情况下查看 Mailer View 吗?

ruby-on-rails - 如何获取带有 asset pipeline 和 Heroku 的电子邮件的完整图像 URL?

ruby-on-rails - 使用 FFaker::Internet.user_name 时指定最小长度

ruby-on-rails-3 - 导轨 : getting the 'new' path for a nested resource

ruby-on-rails - Rails3 种子数据嵌套属性

ruby-on-rails - 令人难忘的 ruby 名称生成器 gem