【问题标题】:rails Action Mailer perform_deliveries=false is not workingrails Action Mailer perform_deliveries=false 不工作
【发布时间】:2020-01-15 15:43:20
【问题描述】:

我正在运行 rails 5.1.0

config/environments/test,我有config.action_mailer.perform_deliveries = false

我正在运行带有-e test 的 Rails 服务器来执行端到端测试。

当我将服务器切换回开发环境时,它会加载一个新的浏览器选项卡,呈现在我的测试期间未发送的每封电子邮件。如果我运行测试 5-6 次,当我切换回开发时,这会导致 50 个浏览器选项卡同时打开。

对于perform_deliveries Rails docs 说:

如果此值为 false,则不会填充 Deliveries 数组,即使 delivery_method 是:测试。

我也在运行 sidekiq 和 redis,所以我不确定是否必须以某种方式设置它们的环境。

我有没有办法在我的测试环境中完全防止电子邮件排队进入系统?

【问题讨论】:

  • 尝试为 sidekiq 设置不同的命名空间。可能是您正在与 redis 中的测试共享开发名称空间。因此,当您运行测试时,您仍然会进入开发队列。
  • 谢谢你,好像成功了。

标签: ruby-on-rails ruby-on-rails-5 end-to-end


【解决方案1】:

在测试环境中运行服务器后,您可以清除 sidekiq 队列。或者在测试环境中使用其他队列名称。

但最重要的是你永远不应该在这种模式下运行服务器。 对于测试,您应该使用单元测试或更好的rspec

【讨论】:

  • 我看不出有什么理由不在测试环境中运行 rails。我们的端到端测试应该与开发环境隔离。
  • 测试环境设置为运行测试。如果您需要其他环境进行调试,请创建一个新环境。
  • 我用它来运行测试。我可以随意自定义测试配置文件。
猜你喜欢
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2011-10-19
  • 2013-05-21
  • 1970-01-01
  • 2015-09-08
相关资源
最近更新 更多