我正试图找到一种方法来测试导航栏的存在。导航栏很可能是部分创建的,然后渲染到所需的每个单独页面。
我如何为此进行测试?
<%= 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>
答案 0 :(得分:0)
我记得有一个关于RSpec的类似问题。大多数事情都很简单,这也不例外。只需检查生成的HTML代码或“您看到的内容”,并告诉RSpec检查是否存在此元素。希望有所帮助,
答案 1 :(得分:0)
如果您愿意,您应该使用Capybara或webrat,并结合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请求测试的详细信息。