背景
我正在为发送电子邮件的Grails应用程序进行jRuby测试。这些测试正在取代通常由手动测试人员完成的测试。他们检查他们的收件箱,看看邮件是否已送达。
问题陈述
我想做一个同样强大的测试,以确保应用程序正确发送电子邮件。 我不需要任何实际的代码来帮助实现这一点,但它有助于了解要使用的技术。
为什么我被困难了
我在Ruby域中寻找解决方案,但我见过的所有人都解决了这个问题似乎是在使用Rails。我没有使用action_mailer或pony(我们有一个 grails 应用程序)所以我不能使用email_spec。如果可以,那就太好了。
我该怎么办?
答案 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的支持。我正在研究如何检查邮件。