Rails教程test_layout_links测试失败

时间:2015-02-14 20:23:54

标签: ruby-on-rails railstutorial.org

我一直在做Harl教程,这个问题并没有引起很大的问题,但我无法弄清楚为什么我的测试无法找到“联系”页面的链接。任何指向正确方向的人都会受到赞赏。

Controller:
class StaticPagesController < ApplicationController
 def home
 end

 def help
 end

 def about
 end

 def contact
 end 
end

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
  assert_select "a[href=?]", help_path
  assert_select "a[href=?]", contact_path
  assert_select "a[href=?]", about_path
  end
end

routes.rb 
Rails.application.routes.draw do

root 'static_pages#home'
get 'help' => 'static_pages#help'
get 'about' => 'static_pages#about'
get 'contact' => 'static_pages#contact'
get 'signup' => 'users#new' 
resources :users 

end

这是该链接唯一的位置,在

_footer.html.erb
<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://railstutorial.org/">News</a></li>
    </ul>
</nav>

这是我收到的错误消息:

1) Failure:
  SiteLayoutTest#test_layout_links [/home/will/rails/sample_app/test/integration/site_layout_test.rb:9]:
  Expected at least 1 element matching "a[href="/contact"]", found 0..
  Expected 0 to be >= 1.

这是联系人模板:      &lt;%provide(:title,“Contact”)%&gt;      

联系

     

         请联系Ruby on Rails教程,了解联系页面上的示例应用程序。      

这是application.html.erb的布局

<!DOCTYPE html>
 <html>
 <head>
 <title><%= full_title(yield(:title)) %></title>
 <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
 <%= csrf_meta_tags %>
 <%=  render 'layouts/shim' %>
 </head>
 <body>
    <%= render 'layouts/header' %>
    <div class="container">
        <%= yield %>
        <%= render 'layouts/footer' %>
        <%= debug(params) if Rails.env.development? %>
    <div>
 </body>
 </html>

2 个答案:

答案 0 :(得分:0)

在测试get root_path之后,添加puts response.body并将结果添加到答案中。您还可以添加布局文件。

答案 1 :(得分:0)

刚刚解决了这个类似的错误 - 然而我在'about'页面上。

删除!DOCTYPE html&amp;从 contact.html.erb 文件中写入的任何其他html

运行测试,你应该好好去!