8

所以我的客户报告说许多电子邮件发给了错误的人,我想编写一些功能测试来查找并确保他们收到了电子邮件以及我的规范中所说的内容。我有使用 mandril api 的 mandrill_mailer,在它发出之前我想看看消息是什么。

例如。创建一个新的用户帐户 -> 创建用户,然后发送一封欢迎电子邮件。在设计它调用 RegistrationMailer.new_registration(resource).deliver 然后向用户发送电子邮件:

  def new_registration(user)
user = User.find_by_email(user["email"])
mandrill_mail template: 'new-registration',
subject: 'Welcome to ContentBlvd!',
to: { email: user["email"], name: user["full_name"] },
vars: {
  'first_name' =>   user["full_name"],
  'unsubscribe' =>  "#{CONFIG[:protocol]}#{CONFIG[:host]}/unsubscribe?email=#{user.email}"
}

结尾

在我的邮件程序中如何测试这个邮件对象?
我尝试了 ActionMailer::Base.deliveries,但它返回 nil(因为我使用的是 mandrill mailer...)所以我尝试了 - MandrillMailer::TemplateMailer.message 但没有运气...。感谢您的帮助。

4

3 回答 3

2

在这一点上,MandrillMailer 似乎支持强大的离线测试选项集。特别是,MandrillMailer.deliveries现在可以出于预期或调试目的进行检查。

于 2015-10-23T19:33:14.630 回答
1

根据wiki,您需要模拟Excon

# spec/rails_helper.rb

config.before(:all) do 
  Excon.defaults[:mock] = true
  Excon.stub({}, {body: "{\"html\":\"RESULT\"}", status: 200})
end
于 2018-10-08T04:25:20.300 回答
-4

您不必使用 Mandrill gem 来使用 Mandrill 发送电子邮件。只需使用 Rails 默认 Mailer 并将配置添加到 application.rb 或 production.rb 即可使用您的 Mandrill 帐户。

http://help.mandrill.com/entries/21738467-Using-Mandrill-s-SMTP-integration-with-Web-Frameworks

于 2014-01-10T04:44:42.040 回答