Ruby on rails 如何在测试环境中关闭ActionMailer?
当我用RSpec运行测试时,我收到了真实的电子邮件。 我已经把所有的东西都按写的那样做了(我已经添加了更改我的环境配置以不发送电子邮件,但它根本没有任何效果。我想我的设置在某个地方被替换了,但我找不到在哪里 这是我对测试环境的配置(config/environments/test.rb) 这是我的邮件:Ruby on rails 如何在测试环境中关闭ActionMailer?,ruby-on-rails,rspec,actionmailer,Ruby On Rails,Rspec,Actionmailer,当我用RSpec运行测试时,我收到了真实的电子邮件。 我已经把所有的东西都按写的那样做了(我已经添加了更改我的环境配置以不发送电子邮件,但它根本没有任何效果。我想我的设置在某个地方被替换了,但我找不到在哪里 这是我对测试环境的配置(config/environments/test.rb) 这是我的邮件: class ApplicationMailer < ActionMailer::Base default from: 'hello@myapp.com' layout 'maile
class ApplicationMailer < ActionMailer::Base
default from: 'hello@myapp.com'
layout 'mailer'
ADMIN_EMAIL = 'admin@myapp.com'
end
class AdminMailer < ApplicationMailer
default to: "#{ADMIN_EMAIL}"
def mandrill_client
@mandrill_client ||= Mandrill::API.new MANDRILL_API_KEY
end
def new_user(user)
#set required params
mandrill_client.messages.send_template template_name, template_content, message
end
end
class ApplicationMailer
似乎我错过了一些非常明显的东西。但是我需要你的帮助来打破它。因为你使用
Mandrill::API
来发送电子邮件,而不是ActionMailer
,你对ActionMailer
的设置对它绝对没有影响
您应该在Mandrill::API
中找到相应的设置,或者为测试存根send方法
实际上,我建议您在Mandrill SMTP服务器上仍然使用ActionMailer
:
config.action_mailer.smtp_settings = {
address: 'smtp.mandrillapp.com',
port: 587,
domain: Rails.application.config_for(:global)['domain'],
authentication: 'plain',
enable_starttls_auto: true,
user_name: Rails.application.secrets.email_provider_username,
password: Rails.application.secrets.email_provider_apikey
}
检查您是否在某个地方有重复的操作邮件程序配置,可能是application.rb,并检查您的测试是否在适当的环境中运行。我已检查,没有重复,测试正在测试环境中运行。
config.action_mailer.smtp_settings = {
address: 'smtp.mandrillapp.com',
port: 587,
domain: Rails.application.config_for(:global)['domain'],
authentication: 'plain',
enable_starttls_auto: true,
user_name: Rails.application.secrets.email_provider_username,
password: Rails.application.secrets.email_provider_apikey
}