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