0

我正在运行一个 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 的东西,所以我不确定要在此处复制哪些额外信息。

4

1 回答 1

0

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

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

于 2014-10-28T08:06:33.087 回答