Mozilla将页脚中的about链接呈现为href =" localhost:3000 / about"什么时候应该渲染为href =" / about",但是当我使用chrome时这不会发生。
任何帮助解决我的测试失败原因的帮助都很棒。
试验:
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 #failing
assert_select "a[href=?]", contact_path
end
捆绑执行rake test"之后
Expected at least 1 element matching "a[href="/about"]", found 0..
Expected 0 to be >= 1.
相关路线.rb:
root 'static_pages#home'
get 'help' => 'static_pages#help'
get 'about' => 'static_pages#about'
get 'contact' => 'static_pages#contact'
查看调用link_to:
<li><%= link_to 'About', about_path %></li>
注意:这是唯一的失败测试,但是当我注释掉这个测试时,接触测试失败了。
编辑:
以下是我的观点:
home.html.erb
<!DOCTYPE html>
<div class="center jumbotron">
<h1>Sample App</h1>
<p>This is the home page for the railtutorial.org book, ch 3</p>
<%= link_to "Sign up now!", signup_path, class: "btn btn-lg btn-primary" %>
</div>
<%= link_to image_tag("rails.png", alt: "Rails logo"), 'http://rubyonrails.org/' %>
</html>
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
相关的_footer视图,错误:
<footer class="footer">
<small>
The <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a>
by <a href="http://www.michaelhartl.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 :(得分:4)
也许您在视图中使用about_url
而不是about_path
?
如果没有,那么在你的测试中添加这一行(在失败的行上方):
puts assert_select 'a[href]'
这将打印您视图中的所有<a href
代码,您应该能够看到大约一个,并了解网址为何不符合预期。
答案 1 :(得分:1)
尝试使用about_url而不是about_path。您似乎在模板中使用了about_url帮助程序,该模板会返回完整的网址,因此测试期望找到完整网址(&#39; wwww.yoursite.com/about'),没有关系网址(&# 39; /左右/&#39)