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

时间:2014-01-08 14:34:49

标签: ruby automated-tests jruby

背景

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

问题陈述

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

为什么我被困难了

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

我该怎么办?

2 个答案:

答案 0 :(得分:1)

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

不要问我具体的实施细节因为我不是grails,但一般原则是:

如果你有一个类MyMailThingy,它的实例上有一个deliver方法来执行邮件传递(可能是邮件主题,正文等都是这个对象的属性),那么猴子补丁:

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断言已经发送了多少封邮件,在他们的身体,主题,来自/来自领域等上断言而不发送实际邮件

答案 1 :(得分:0)

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