【问题标题】:Sendgrid Error in Capybara TestingCapybara 测试中的 Sendgrid 错误
【发布时间】:2012-11-20 18:39:08
【问题描述】:

我正在尝试对一个非常复杂的应用进行追溯性测试(再也不会)。我已经内置了 Sendgrid 功能,可以在新用户注册时向他们发送电子邮件。结果,当我尝试测试注册页面时,它尝试向我的 example@example.net 电子邮件发送一条消息,我收到以下错误:

Net::SMTPFatalError:
550 Cannot receive from specified address <my app's email>: Unauthenticated senders not allowed

不过,我不清楚这是我如何进行测试的问题(我遗漏了一些东西——我是新人),还是更深层次的问题。自从我从 GMail 切换到 Sendgrid 后,我的应用程序在服务器上使用它时应该发送的电子邮件出现了错误,尽管不是在线的。我将其归结为 Sendgrid 是一个专门的基于 Web 应用程序的电子邮件服务,但现在我猜我在配置文件中做错了。我设置配置的方式是这样的:

初始化程序/mail.rb

# SendGrid Settings
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp

我的 environment.rb 文件中没有任何内容。 This 问题建议也许我应该将这些设置切换到 environment.rb 文件中,但是(显然,我不太了解配置文件),我想知道我是否应该为 development.rb 设置单独的设置, test.rb 等(另外,我尝试了那个开关,它并没有改变错误)。此外,如果 capybara/rspec 有一种解决方法可以在测试期间忽略电子邮件请求(或者以某种方式处理它是一个假电子邮件地址并在不尝试发送的情况下测试电子邮件)。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 email testing rspec


    【解决方案1】:

    您应该可以通过配置将 ActionMailer 设置为测试模式:

    config.action_mailer.delivery_method = :test
    

    或在您的测试中:

    ActionMailer::Base.delivery_method = :test
    

    您还可以在testing mailers上找到更多信息

    【讨论】:

    • 谢谢!当您说“在您的测试中”时,您是指在 test.rb 文件中吗?或者在我的 user_pages_spec.rb 文件中(我实际使用水豚的地方)?
    • 是的,直接来自您的水豚规范,在您尝试发送电子邮件之前。
    • 太棒了!像魅力一样工作。
    • 太棒了!如果您有时间,最好在配置文件中进行,例如test.rb 和 development.rb,所以你可以做一些事情,比如让开发人员实际发送消息,但用mailcatcher 之类的东西捕获它
    • 一定要把它放在你的配置文件中。它更安全,也可以在 rspec 中工作。此外,您应该查看github.com/bmabey/email-spec 以测试电子邮件内容。
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多