在Rspec中测试导航栏的存在

时间:2012-03-15 20:51:48

标签: ruby-on-rails rspec

我正试图找到一种方法来测试导航栏的存在。导航栏很可能是部分创建的,然后渲染到所需的每个单独页面。

我如何为此进行测试?

 <%= link_to "App_Name", root_path, :class => 'brand' %>
 <ul class="nav">
<% if user_signed_in? %>
<li>
<%= link_to('Logout', destroy_user_session_path, :method=>'delete') %>        
</li>
<% else %>
<li>
<%= link_to('Login', new_user_session_path)  %>  
</li>
<% end %>
<% if user_signed_in? %>
<li>
<%= link_to('Edit account', edit_user_registration_path) %>
</li>
<% else %>
<li>
<%= link_to('Sign up', new_user_registration_path)  %>
</li>
<% end %> 
</ul>

2 个答案:

答案 0 :(得分:0)

我记得有一个关于RSpec的类似问题。大多数事情都很简单,这也不例外。只需检查生成的HTML代码或“您看到的内容”,并告诉RSpec检查是否存在此元素。希望有所帮助,

答案 1 :(得分:0)

如果您愿意,您应该使用Capybarawebrat,并结合RSpec请求规范来测试HTML页面元素。

对于Capybara,这是我的偏好,你会写一个如下的请求规范:

describe "Navigation Requests Spec" do

  describe "Navigation should be available" do
    it "should show the navigation on the home page" do
      visit root_path
      page.should have_link('Logout')
      page.should have_link('Login')
      page.should have_link('Sign up')
    end
  end
end

显然,您然后为已登录用户添加测试并检查他们可以看到的内容。在这种情况下,我已将所有断言放入一个测试中以保持答案更短,您可能希望将它们分解为单独的测试,这通常被推荐为RSpec方法,尽管它确实是您的个人偏好..

水豚页面非常值得一试,它具有测试页面上各种html的重要功能。值得查看RSpec请求测试的详细信息。