我想在连接到网络时和未连接到网络时运行 RSpec 来测试我的代码。
不幸的是,应用程序中有一些依赖于实时连接的测试——电子邮件发送、Facebook 集成等。
是否有创建在线/离线测试环境的最佳实践方法,或者这是一种不好的做法?从我在网上找到的关于这个的信息有多少来判断,我猜是后者。
我想在连接到网络时和未连接到网络时运行 RSpec 来测试我的代码。
不幸的是,应用程序中有一些依赖于实时连接的测试——电子邮件发送、Facebook 集成等。
是否有创建在线/离线测试环境的最佳实践方法,或者这是一种不好的做法?从我在网上找到的关于这个的信息有多少来判断,我猜是后者。
通常在这种情况下,您会模拟连接到应用程序外部的代码部分。这使您可以针对所连接的服务/系统的预期结果进行测试。运行测试也更快。
这里有一个关于使用 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
不确定我是否完全提倡它,但它可能会做你想做的事!
您可以在不想连接到远程资源的测试/规范中使用webmock 。