2016-12-08 7 views
2

Я обновляю свои знания RoR для предстоящего проекта и работаю через Rails Tutorial и соревнуются вплоть до раздела 5.3.4 "Layout link tests" без каких-либо серьезных проблем.Ошибка интеграции интеграции для нижних колонтитулов

Этот раздел меня сильно озадачил, насколько я могу судить, мой код был изменен в соответствии с учебником, поэтому он должен работать.

Интеграционные тесты для заголовка работают нормально, но ни один из тестов интеграции нижнего колонтитула не работает.

Ссылки на страницах работают так, как ожидалось, но тест возвращается (и если комментарий «О тестировании» прокомментирован, то такая же ошибка возникает для теста 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> 

Спасибо, что нашли время, чтобы посмотреть на этот вопрос.

ответ

1

Отъезд home.html.erb. Ваша последняя строка закрывает страницу: </html>. Поэтому, когда вы используете это в application.html.erb, страница заканчивается до создания нижнего колонтитула.

Это говорит ... по какой-то причине, это не то, как страница на самом деле отображается в браузере. Это как если бы дополнительный закрывающий тег игнорируется. Таким образом, ваш нижний колонтитул фактически отображается.

+0

Благодарим вас за излишнюю ошибку «». –

+0

Думая об этом, я подозреваю, что браузеры немного более терпимы к проблемам форматирования, чем к тестовому коду. Это хорошая вещь (хотя она и меня смутила!) –

+0

@NeilStoker - Я тоже был этому удивлен. Я предполагаю, что имеет смысл, что браузеры будут покрывать очевидные ошибки, но это, безусловно, сделало поиск этой ошибки сложной! – McCraigor

Смежные вопросы