在离线运行Rspec时,我应该如何处理在线依赖?

时间:2011-01-05 10:43:41

标签: ruby-on-rails offline rspec2

我想运行RSpec来测试我的代码,当我连接到网络时以及当我没有连接时。

不幸的是,应用程序中有一些测试依赖于实时连接 - 电子邮件发送,Facebook集成等。

是否有创建在线/离线测试环境的最佳实践方法,还是这种不良做法?根据我在网上发现的这一点我很少猜测后者。

2 个答案:

答案 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