【问题标题】:How do I test mandrill api with rspec如何使用 rspec 测试 mandrill api
【发布时间】:2013-10-30 17:49:21
【问题描述】:

所以我的客户报告说许多电子邮件发给了错误的人,我想编写一些功能测试来查找并确保他们收到电子邮件以及我的规范中的内容。 我有使用 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 但没有运气....感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails email rspec devise mandrill


    【解决方案1】:

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

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

    【讨论】:

    • 这没有回答问题。
    【解决方案2】:

    此时,MandrillMailer 似乎支持robust offline testing 选项集。特别是,现在可以检查 MandrillMailer.deliveries 以用于预期或调试目的。

    【讨论】:

      【解决方案3】:

      根据wiki,您需要模拟Excon

      # spec/rails_helper.rb
      
      config.before(:all) do 
        Excon.defaults[:mock] = true
        Excon.stub({}, {body: "{\"html\":\"RESULT\"}", status: 200})
      end
      

      【讨论】:

        猜你喜欢
        • 2014-07-15
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        相关资源
        最近更新 更多