如何使用RSpec测试站点菜单的结构?

时间:2012-02-02 01:40:51

标签: ruby-on-rails testing layout rspec

我如何最好地测试页面结构完整性的完整性?

作为一个例子,我想确保网站菜单包含所有必需的元素。它使用常规的CSS格式构建,并具有以下元素:

<li><%= link_to "Some page", some_path %></li>
...
<li><%= link_to "Login", path_to_login_action %></li>
<li><%= link_to "Register", path_to_registration_action %></li>

或者这在某种程度上毫无意义? (仍然试图对测试风格有一个良好的理解)

1 个答案:

答案 0 :(得分:0)

您可以使用assert_select方法:

describe "home page" do
  it "diplays all menu elements" do
    get "/home"
    assert_select "ul.menu li" do
      assert_select "a.first", "Some page"
      assert_select "a.another-class", "Login"
      assert_select "a.last", "Register"
    end
  end
end

在另一种情况下,在您的Gemfile中包含webratcapybara

 gem 'capybara'
 gem 'webrat'

并使用have_selector方法:

describe "home page" do
  it "diplays all menu elements" do
    visit "/home"
    within "ul.menu li" do 
      page.should have_selector("a.first", :text => "Some page")
      page.should have_selector("a.another-class", :text => "Login")
      page.should have_selector("a.last", :text => "Register")
    end
  end
end

详细了解Rspec-rails:http://github.com/rspec/rspec-rails#readme(参见“请求规范”一章)