1

我想在连接到网络时和未连接到网络时运行 RSpec 来测试我的代码。

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

是否有创建在线/离线测试环境的最佳实践方法,或者这是一种不好的做法?从我在网上找到的关于这个的信息有多少来判断,我猜是后者。

4

2 回答 2

1

通常在这种情况下,您会模拟连接到应用程序外部的代码部分。这使您可以针对所连接的服务/系统的预期结果进行测试。运行测试也更快。

这里有一个关于使用 rspec 模拟的简短教程,但我相信你可以自己找到很多。

如果您通过 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

不确定我是否完全提倡它,但它可能会做你想做的事!

于 2011-01-05T11:32:55.833 回答
0

您可以在不想连接到远程资源的测试/规范中使用webmock 。

于 2014-12-09T10:55:05.680 回答