【发布时间】:2011-01-05 10:43:40
【问题描述】:
我想在连接到网络时和未连接到网络时运行 RSpec 来测试我的代码。
不幸的是,应用程序中有一些依赖于实时连接的测试 - 电子邮件发送、Facebook 集成等。
是否有创建在线/离线测试环境的最佳实践方法,或者这是一种不好的做法?从我在网上能找到的关于这个的信息来看,我猜是后者。
【问题讨论】:
标签: ruby-on-rails offline rspec2
我想在连接到网络时和未连接到网络时运行 RSpec 来测试我的代码。
不幸的是,应用程序中有一些依赖于实时连接的测试 - 电子邮件发送、Facebook 集成等。
是否有创建在线/离线测试环境的最佳实践方法,或者这是一种不好的做法?从我在网上能找到的关于这个的信息来看,我猜是后者。
【问题讨论】:
标签: ruby-on-rails offline rspec2
通常在这种情况下,您会模拟连接到应用程序外部的代码部分。这使您可以针对所连接的服务/系统的预期结果进行测试。运行测试也更快。
有一个关于使用 rspec here 进行模拟的简短教程,但我相信您自己可以找到很多。
如果您通过 ActionMailer 发送电子邮件,还有其他方法可以测试电子邮件是否被发送。在rails testing guide 中有一个部分。
编辑(回应评论):
您可以在TestHelper 中放置一个方法,以便仅在您在线时运行测试。比如:
def when_online
if test_remote_connectivity
yield
else
puts "Skipping test offline."
end
end
那么你可以这样称呼它:
def test_facebook
when_online do
.....
end
end
不确定我是否完全提倡它,但它可能会做你想做的事!
【讨论】:
您可以在不想连接到远程资源的测试/规范中使用webmock。
【讨论】: