页脚链接的集成测试失败

时间:2016-12-08 11:24:01

标签: railstutorial.org

我正在刷新我对即将到来的项目的RoR知识并完成Rails教程,并且在没有任何重大问题的情况下竞争了5.3.4 "Layout link tests"部分。

这部分让我感到难过,据我所知,我的代码已经改变以匹配教程,所以应该工作。

标头的集成测试工作正常,但页脚集成测试都没有工作。

页面上的链接按预期工作,但测试正在返回(如果注释关于测试,则联系测试发生相同的错误。)

我遗漏了一些非常明显的东西,但我无法识别它。

我的代码在我的Bitbucket Repository

 FAIL["test_layout_links", SiteLayoutTest, 1.4785866689999239]
 test_layout_links#SiteLayoutTest (1.48s)
        Expected at least 1 element matching "a[href="/about"]", found 0..
        Expected 0 to be >= 1.
        test/integration/site_layout_test.rb:10:in `block in <class:SiteLayoutTest>'

链接显示在页面html

<nav>
  <ul class ="nav navbar-nav navbar-right">
    <li><a href="/">Home</a></li>
    <li><a href="/help">Help</a></li>
    <li><a href="#">Log in</a></li>
  </ul>
</nav>

<nav>
  <ul>
    <li><a href="/about">About</a></li>
    <li><a href="/contact">Contact</a></li>
    <li><a href="http://news.railstutorial.org/">News</a></li>
  </ul>
</nav>

site_layout_test.rb

require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest

  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
  end
end

application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
    <%= render 'layouts/rails_default' %>
    <%= render 'layouts/shim' %>
  </head>

  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
      <%= render 'layouts/footer' %>
    </div>
  </body>
</html>

_header.html.erb

<header class="navbar navbar-fixed-top navbar-inverse">
  <div class="container">
    <%= link_to "sample app", root_path, id: "logo" %>
    <nav>
      <ul class ="nav navbar-nav navbar-right">
        <li><%= link_to "Home", root_path %></li>
        <li><%= link_to "Help", help_path %></li>
        <li><%= link_to "Log in", '#' %></li>
      </ul>
    </nav>
  </div>
</header>

_footer.html.erb

<footer class="footer">
  <small>
    The <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a> by
    <a href="http://www.michaelartl.com/">Michael Hartl</a>
  </small>
  <nav>
    <ul>
      <li><%= link_to "About",   about_path %></li>
      <li><%= link_to "Contact", contact_path %></li>
      <li><a href="http://news.railstutorial.org/">News</a></li>
    </ul>
  </nav>
</footer>

感谢您抽出时间来研究这个问题。

1 个答案:

答案 0 :(得分:1)

结帐home.html.erb。最后一行关闭页面:</html>。因此,当您在application.html.erb中使用该页面时,页面会在页脚创建之前结束。

那说...出于某种原因,这不是页面在浏览器中实际呈现的方式。好像忽略了额外的结束标记。所以你的页脚实际显示。