2011-05-01 28 views
2

我正在加强我的RoR应用程序的RSpec测试。我想要一个简单的方法来验证点击页面上的每个链接是否得到正确处理,即生成一个可识别的路由到控制器,并在控制器中有一个方法来为其提供服务。RoR,RSpec:要验证页面上的每个链接都可以被维护

我可以为每个页面编写特定的测试,但最好让RSpec帮助函数自动查找页面上的所有链接并验证每个页面。 FWIW,假设所有链接都在我的域中(没有链接到外部网站)是安全的。

而不是通过列举所有我尝试过的东西来膨胀这个问题,我会问:你会怎么做?看起来像一个常见和有用的功能。

  • FF

回答

1

我会使用水豚概率...

1. make list of pages 
2. For each page 
3.  Visit page 
4.  get all links using xpath (included in capybaara) 
5.  For each link 
6.   do a Rspec test get url; response.should be_ok 
+0

我已经有引入nokogiri - 我真的需要水豚只是为了获得一个网页上的链接? – 2011-05-02 15:48:36

+0

不,可能不是。我只是说,因为它已经集成到RSpec中并且可能会降低WTF因子。也就是说,Capybara在内部使用Nokogiri,但我不知道如何直接抓取与Nokogiri的链接并将其与Rspec整合起来。它可能是透明的,我只是从来没有尝试过..所以我不能说 – noli 2011-05-03 05:34:13

+0

让我补充到我的原始答案,也许你可以使用一个站点地图宝石列出你的应用程序中的所有网页,并使更容易步骤1 – noli 2011-05-03 05:35:27

0

这种事情属于在集成测试,你既可以在RSpec的或黄瓜写。测试自己的链接价值有限 - 它会告诉你链接是否被破坏,但它不会告诉你链接是否指向错误的地方。

黄瓜,你可以写这样的:

Given I am on the home page 
When I follow "Buy Stuff" 
Then I should be on the shopping page 
+0

一致认为这是集成测试。不同意这样做的价值有限:它会立即突出显示缺失的路线,缺少静态页面等。我的问题的症结在于如何自动获取页面上的所有链接,单击每个链接并确保没有任何结果错误。 – 2011-05-02 15:46:05

相关问题