测试rails应用程序中的断开链接

kav*_*vin 6 ruby-on-rails

我有一个现有的rails应用程序,我想测试损坏的链接.我应该使用集成测试或Rspec进行哪些测试?不熟悉BDD.

提前致谢!!

sam*_*len 5

我认为这取决于你为什么要"测试"断链接.

场景1)确保用户输入的URL正确可能使用如下方法:

def active_link?(url)
  uri = URI.parse(url)
  response = nil
  Net::HTTP.start(uri.host, uri.port) { |http|
    response = http.head(uri.path.size > 0 ? uri.path : "/")
  }  
  return response.code == "200"
end
Run Code Online (Sandbox Code Playgroud)

然后,您可以在Rspec测试中使用它:

active_link?('http://example.com').should be
Run Code Online (Sandbox Code Playgroud)

场景2)您只是想确保您网站上的所有链接都有效:

如果是这种情况,您可以尝试使用Unix'wget'命令:

wget --spider -r -l 1 --header='User-Agent: Mozilla/5.0' http://example.com 2>&1 | grep -B 2 '404'
Run Code Online (Sandbox Code Playgroud)

在场景2中,它会将所有404转储到终端屏幕.将它放入rake命令是一件相对简单的事情; Jason Seifer有一篇很棒的博客文章(http://jasonseifer.com/2010/04/06/rake-tutorial)


Ari*_*jan 0

好吧,如果您编写正确的集成测试(例如使用 Cucumber 或其他测试),您应该接触整个前端界面。例如点击链接、填写表格等。

当您的应用程序中存在死链接时,这组测试会立即向您发出警告。