【问题标题】:Integration test failing for footer links页脚链接的集成测试失败
【发布时间】:2016-12-08 11:24:00
【问题描述】:

我正在为即将到来的项目更新我的 RoR 知识并完成 Rails 教程,并且已经完成了 5.3.4 "Layout link tests" 部分的比赛,没有任何重大问题。

这部分让我很困惑,据我所知,我的代码已更改为与教程相匹配,因此应该可以正常工作。

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

页面上的链接按预期工作,但测试正在返回(如果注释了 About 测试,Contact 测试也会出现相同的错误)。

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

我的代码在我的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>

感谢您花时间查看问题。

【问题讨论】:

    标签: railstutorial.org


    【解决方案1】:

    查看home.html.erb。最后一行关闭页面:&lt;/html&gt;。因此,当您在 application.html.erb 中使用它时,页面会在您的页脚创建之前结束。

    也就是说……出于某种原因,页面在浏览器中的实际呈现方式并非如此。就好像额外的结束标签被忽略了。所以你的页脚实际上会显示出来。

    【讨论】:

    • 谢谢,家里多余的&lt;/html&gt;是问题所在。
    • 想一想,我怀疑浏览器比测试代码更能容忍格式问题。这是一件好事(尽管它确实让我感到困惑!)
    • @NeilStoker - 我也对此感到惊讶。我想浏览器会覆盖明显的错误是有道理的,但它确实让发现这个错误变得很棘手!
    猜你喜欢
    • 1970-01-01
    • 2017-03-29
    • 2015-08-13
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多