【发布时间】:2023-03-08 01:45:01
【问题描述】:
设计 3.5.2
导轨 4.2.5
电子邮件发送已通过 ActiveJob 成功连接,如说明 here 中所定义。 Resque 正在成功处理作业以发送电子邮件(使用 Redis 作为数据存储。)
当 Redis 关闭时,我的 RSpec 功能测试失败并显示 Redis::CannotConnectError。理想情况下,我希望我的功能测试能够触发设计电子邮件,但不提供任何东西。我测试了deliveries 数组。
在test.rb,我有:
config.action_mailer.delivery_method = :test
config.action_mailer.perform_deliveries = false
知道我真的在使用Devise::Mailer,我在rails_helper中明确设置了以下内容:
Devise::Mailer.delivery_method = :test
Devise::Mailer.perform_deliveries = false
当我在模型中点击以下方法时,我可以在运行测试时确认这些设置(通过pry 断点)。
模型方法:
def send_devise_notification(notification, *args)
binding.pry
devise_mailer.send(notification, self, *args).deliver_later
end
pry(#<User>)> devise_mailer.perform_deliveries
=> false
pry(#<User>)> devise_mailer.delivery_method
=> :test
我的测试仍然失败,出现 Redis::CannotConnectError 异常。
当我更改此行时:devise_mailer.send(notification, self, *args).deliver_later
致devise_mailer.send(notification, self, *args).deliver_later unless Rails.env.test?
我的测试通过了。但是,这似乎是测试代码和生产代码的错误混合。
我在设计邮件程序的配置中缺少什么以防止电子邮件在RAILS_ENV=test 中传递?
【问题讨论】:
标签: ruby-on-rails rspec devise