测试中的Ruby加载模块

时间:2014-10-26 18:53:15

标签: ruby sinatra minitest padrino rack-test

我正在运行padrino应用程序,并已开始使用附带的邮件程序。我想测试邮件是否已发送,之前访问Mail :: TestMailer对象时没有遇到任何问题,以查看测试期间发送的邮件。

这就是我正在做的事情的背景,但不完全是问题。我想知道模块如何可用于运行时环境。 我有两个版本的测试

第一

def test_mailer
  Mail::TestMailer.deliveries.clear
  get '/owners/test'
  e =  Mail::TestMailer.deliveries.pop
  puts e.to.to_s
end

第二

def test_mailer
  get '/owners/test'
  Mail::TestMailer.deliveries.clear
  e =  Mail::TestMailer.deliveries.pop
  puts e.to.to_s
end

在第二个版本中,此测试失败并显示错误消息NoMethodError: undefined method to' for nil:NilClass这对我有意义。我清除了消息然后要求最后一个应该是零。但是,当我在第一个版本上运行测试时,错误为NameError: uninitialized constant OwnersControllerTest::Mail

因此,某种方式get方法导致Mail对象/模块可用。我不明白它是如何做到这一点的。我不知道这是机架测试还是padrino事情,所以我不确定要在这里复制哪些额外信息。

1 个答案:

答案 0 :(得分:0)

require 'mail'添加到测试助手。

此问题在此解释:https://github.com/padrino/padrino-framework/issues/1797