我正在刷新我对即将到来的项目的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>
感谢您抽出时间来研究这个问题。
答案 0 :(得分:1)
结帐home.html.erb
。最后一行关闭页面:</html>
。因此,当您在application.html.erb
中使用该页面时,页面会在页脚创建之前结束。
那说...出于某种原因,这不是页面在浏览器中实际呈现的方式。好像忽略了额外的结束标记。所以你的页脚实际显示。