我想运行RSpec来测试我的代码,当我连接到网络时以及当我没有连接时。
不幸的是,应用程序中有一些测试依赖于实时连接 - 电子邮件发送,Facebook集成等。
是否有创建在线/离线测试环境的最佳实践方法,还是这种不良做法?根据我在网上发现的这一点我很少猜测后者。
答案 0 :(得分:1)
通常情况下,您会模拟连接到应用程序外部的代码部分。这允许您根据要连接的服务/系统的预期结果进行测试。运行测试也更快。
有一个关于使用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
不确定我是否完全提倡它,但它可能会做你想要的!
答案 1 :(得分:0)
您可以在不希望连接到远程资源的测试/规范中使用webmock。