jRuby 测试自动化:检查是否已发送电子邮件.有哪些库可用



Background

我正在为一个发送电子邮件的Grails应用程序做jRuby测试。这些测试正在取代通常由手动测试人员完成的测试。他们检查收件箱以查看邮件是否已送达。

问题陈述

我想做一个同样强大的测试,以确保应用程序正确发送电子邮件。我不需要任何实际代码来帮助做到这一点,但它会有助于知道使用什么技术。

为什么到目前为止我被难住了

我一直在Ruby领域寻找解决方案,但是我见过的解决这个问题的每个人似乎都在使用Rails。我没有使用action_mailer或小马(我们有一个圣杯应用程序),所以我不能使用email_spec。如果可以的话,那就太好了。

我能做什么?

您可以使用 Rails 方法来测试邮件:猴子补丁邮件在测试设置期间发送代码,以将所有应该传递的邮件实例放入全局可访问的数组中,这样您就可以在该数组上执行断言。

不要问我确切的实现细节,因为我不喜欢圣杯,但一般原则是这样的:

如果你有一个类MyMailThingy,它的实例上有一个执行邮件传递的deliver方法(大概邮件主题、正文等是这个对象的属性),那么 monkey patch

class MyMailThingy
  # same as `cattr_accessor :mock_queue` under rails
  def self.mock_queue; @@mock_queue; end
  def self.mock_queue=(arg); @@mock_queue=arg; end
  def deliver
    self.class.mock_queue ||= []
    self.class.mock_queue << self.dup
    self
  end
end

然后在您的测试中,您可以断言MyMailThingy.mock_queue发送了多少邮件,断言它们的身体、主题、往返字段等,而无需发送实际邮件

我在这里找到了有关如何发送邮件的答案。看起来Ruby已经内置了对SMTP的支持。我现在正在研究如何检查邮件。

相关内容

  • 没有找到相关文章

最新更新