2015-03-18 2 views
2

Я пытаюсь понять смысл учебника Rails от Hartl's Rails, но на самом деле не понимаю его и то, что он стремится сделать. Мое обоснование:Учебное пособие по Hartl Rail: глава 5, упражнение 3

Это говорит о «full_title помощник», который ссылается на код, который мы помещены в приложение/контроллеры/хелперов/application_helper.rb:

def full_title(page_title = '') 
    base_title = "Ruby on Rails Tutorial Sample App" 
    if page_title.empty? 
     base_title 
    else 
     "#{page_title} | #{base_title}" 
    end 
    end 

упражнение является: 1) Включить выше application_helper.rb файл в test_helper, добавив строку "include ApplicationHelper" в /test/test_helper.rb

2), то мы можем расширить тест/интеграции/site_layout_test.rb с:

get signup_path 
assert_select "title", full_title("Sign up") 

, который использует метод full_title с «Регистрация» в качестве page_title.

Однако этот тест не будет проверяться, например, для опечаток в base_title в методе full_title.

3) Назначение: Решите это ограничение, создав тестовый помощник «test/helpers/application_helper_test.rb», который проверяет это. Решения Код для тестирования/хелперов/application_helper_test.rb:

require 'test_helper' 
    class ApplicationHelperTest < ActionView::TestCase 
    test "full title helper" do 
     assert_equal full_title,   "Ruby on Rails Tutorial Sample App" 
     assert_equal full_title("Help"), "Help | Ruby on Rails Tutorial Sample App" 
    end 
    end 

В результате, по крайней мере в моем случае является то, что вышеупомянутое испытание полного названия помощника выполняется только при запуске «пучок теста Exec грабель», а не при запуске " пакетный тест rake test: интеграция ». Но для запуска «теста проверки пакетов» мы уже провели прекрасный рабочий тест, который проверяет каждый заголовок страницы; мы сделали это ранее. То, что я, хотя это упражнение, хотело добиться, чтобы мы также тестировали заголовок страницы при запуске «bundle exec rake test: integration».

Что мне не хватает?

ответ

0

Я думаю, что вы не пропустите ничего
, потому что от того, что я получаю в http://guides.rubyonrails.org/testing.html разделе 6
rake test:integration просто Запускает все интеграционные тесты от тестирования/интеграции

application_helper_test.rb отличается тест от интеграционного теста
application_helper_test .rb предназначен только для тестирования полный заголовок хелпера метод

0

Насколько я понимаю, интеграционные тесты «имитируют действия пользователь взаимодействует с нашим приложением с помощью веб-браузера ». Это упражнение не является интеграционным тестом, оно проверяет что-то, что не имеет никакого отношения к взаимодействию с пользователями, поэтому я полагаю, что именно поэтому он не вызывается в рейк-тесте: интеграция. Кроме того, если вы сравните этот файл с тестом/контроллерами/static_pages_controller_test.rb , вы увидите, что они наследуются от разных классов: хелпер-тест приложения из ActionView и static_pages-controller_test из ActionController. Но ... Я Ruby Nuby, так что посмотрим, сможет ли кто-нибудь подтвердить это?

0

Если вы сохранили файл тест под тест/хелперов, а затем использовать:

rails test:helpers 

Это будет запускать все тесты в этом каталоге.

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