2016-12-08 5 views
2

今後のプロジェクトやRailsチュートリアルに関するRoRの知識が爽快になり、大きな問題なくセクション5.3.4 "Layout link tests"まで競争しました。フッターリンクのインテグレーションテストに失敗しました

このセクションでは、わかりましたが、チュートリアルと一致するようにコードが変更されているため、動作するはずです。

ヘッダーの統合テストは正常に機能していますが、いずれのフッター統合テストも機能していません。

ページのリンクは正常に動作していますが、テストが戻っています(Aboutテストにコメントが付いている場合、Contactテストでも同じエラーが発生しています)。

私は本当に明白なものを紛失していますが、わかりません。

私のコードは、リンクがページの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

に存在している私の 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>' 

であります

<!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

home.html.erbを参照してください。最後の行がページを閉じます:</html>。だからapplication.html.erbでそれを使用すると、フッターが作成される前にページが終了します。

これは...何らかの理由で、ページが実際にブラウザでどのようにレンダリングされるかではありません。これは、余分な終了タグが無視されているかのようです。実際にはフッターが表示されます。

+0

ありがとうございました。余計な「」が問題でした。 –

+0

これについて考えてみると、ブラウザはテストコードよりも書式設定の問題に対して少し寛容であると思われます。これは良いことです(それは私にはうんざりでした!) –

+0

@NeilStoker - 私はこれにも驚いていました。私はブラウザが明白なエラーをカバーするのは理にかなっていると思うが、それは確かにバグのトリッキーなことを発見した! – McCraigor

関連する問題