2015-06-23 3 views
0

Следуя руководству Rails Майклом Хартлом, я тестирую свои статические страницы с помощью Minitest in Rails для <title>.Rails: тесты Minitest терпят неудачу, когда они должны пройти

Вот static_pages_controller_test.rb файл:

require 'test_helper' 

class StaticPagesControllerTest < ActionController::TestCase 
    test "should get home" do 
    get :home 
    assert_response :success 
    assert_select "title", "Home | Microblog" 
    end 

    test "should get help" do 
    get :help 
    assert_response :success 
    assert_select "title", "Help | Microblog" 
    end 

    test "should get about" do 
    get :about 
    assert_response :success 
    assert_select "title", "About | Microblog" 
    end 

end 

Вот домашней странице home.html.erb файла:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Home | Microblog</title> 
    </head> 
    <body> 
    <h1>Microblog</h1> 
    <p> 
     This is the homepage for Microblog, a brand new microblogging app. 
    </p> 
    </body> 
</html> 

help.html.erb и about.html.erb в основном содержат один и тот же контент, с небольшими вариациями.

Итак, из моего понимания, тесты должны пройти.

Однако, когда я бегу rake, я получаю:

Run options: --seed 47355 

# Running: 

FFF 

Finished in 0.112314s, 26.7109 runs/s, 53.4217 assertions/s. 

    1) Failure: 
StaticPagesControllerTest#test_should_get_home [/Users/TXC/code/microblog/test/controllers/static_pages_controller_test.rb:7]: 
<Home | Microblog> expected but was 
<Home | Microblog>.. 
Expected 0 to be >= 1. 


    2) Failure: 
StaticPagesControllerTest#test_should_get_help [/Users/TXC/code/microblog/test/controllers/static_pages_controller_test.rb:13]: 
<Help | Microblog> expected but was 
<Help | Microblog>.. 
Expected 0 to be >= 1. 


    3) Failure: 
StaticPagesControllerTest#test_should_get_about [/Users/TXC/code/microblog/test/controllers/static_pages_controller_test.rb:19]: 
<About | Microblog> expected but was 
<About | Microblog>.. 
Expected 0 to be >= 1. 

3 runs, 6 assertions, 3 failures, 0 errors, 0 skips 

В частности, я не понимаю, почему я получаю:

<Home | Microblog> expected but was 
    <Home | Microblog>.. 

Что я упускаю?

UPDATE: Я продолжал с учебником и следовал указаниям в Расширенной настройки тестирования секции.

Вот что я получаю, когда я бег всех тестов с Guard:

[1] guard(main)> 
11:41:17 - INFO - Run all 
11:41:17 - INFO - Running: all tests 
Started 

FAIL["test_should_get_home", StaticPagesControllerTest, 2015-06-20 19:36:39 -0700] 
test_should_get_home#StaticPagesControllerTest (1434854199.36s) 
     <Home | Microblog> expected but was 
     <Home | Microblog>.. 
     Expected 0 to be >= 1. 
     test/controllers/static_pages_controller_test.rb:7:in `block in <class:StaticPagesControllerTest>' 

FAIL["test_should_get_help", StaticPagesControllerTest, 2015-06-20 19:36:39 -0700] 
test_should_get_help#StaticPagesControllerTest (1434854199.37s) 
     <Help | Microblog> expected but was 
     <Help | Microblog>.. 
     Expected 0 to be >= 1. 
     test/controllers/static_pages_controller_test.rb:13:in `block in <class:StaticPagesControllerTest>' 

FAIL["test_should_get_about", StaticPagesControllerTest, 2015-06-20 19:36:39 -0700] 
test_should_get_about#StaticPagesControllerTest (1434854199.38s) 
     <About | Microblog> expected but was 
     <About | Microblog>.. 
     Expected 0 to be >= 1. 
     test/controllers/static_pages_controller_test.rb:19:in `block in <class:StaticPagesControllerTest>' 

    3/3: [===================================] 100% Time: 00:00:00, Time: 00:00:00 

Finished in 0.22498s 
3 tests, 6 assertions, 3 failures, 0 errors, 0 skips 

Я продолжал расследование причин этой проблемы, но ничего не нашел убедительное до сих пор.

Есть идеи?

+0

Действительно, я не знаю, но попытаетесь ли вы заменить символ трубы? или избежать его? – rfellons

+0

@fellons Это замечательное замечание, я не думал об этом. Но я просто посмотрел файлы, и бывает, что символ канала не находится в тегах <%= ... %>. Я все равно заменил его тире, но получил те же результаты теста. Я также избежал этого, но тест все равно не прошел. Очень странно. Это может быть связано с версией драгоценных камней, которые я использую. –

+0

Возможно, здесь вы можете найти howto debug whats. https://coderwall.com/p/bbxb8g/use-ruby-debugger-when-debugging-rspecs – rfellons

ответ

0

Итак, я продолжал следовать руководству, а в следующей главе (глава 4) в какой-то момент мы создаем помощника full_title и удаляем <% обеспечения (: title, «Home»)%> из представлений ,

Я не знаю, как, но это решило проблему и сделали тесты, чтобы передать:

11:49:36 - INFO - Running: test/controllers/static_pages_controller_test.rb 
Started 

FAIL["test_should_get_home", StaticPagesControllerTest, 2015-06-20 19:36:39 -0700] 
test_should_get_home#StaticPagesControllerTest (1434854199.39s) 
     <Microblog> expected but was 
     <Home | Microblog>.. 
     Expected 0 to be >= 1. 
     test/controllers/static_pages_controller_test.rb:7:in `block in <class:StaticPagesControllerTest>' 

    3/3: [===================================] 100% Time: 00:00:00, Time: 00:00:00 

Finished in 0.21526s 
3 tests, 6 assertions, 1 failures, 0 errors, 0 skips 


11:50:15 - INFO - Running: test/controllers/static_pages_controller_test.rb 
Started 

    3/3: [===================================] 100% Time: 00:00:00, Time: 00:00:00 

Finished in 0.21126s 
3 tests, 6 assertions, 0 failures, 0 errors, 0 skips 

Надежда, что помогает, если вы наткнулись на тот же вопрос.

0

Я не понимаю вашего комментария о характере трубы, не находясь между <% =%>. Потому что: ваши файлы не тестируют «присвоенные» заголовки с помощью erb. Это происходит позже в учебнике. В этом тесте вы должны протестировать «простой» формат html. Есть ли шанс, что это проблема?

Я не помню точно, что это за тест, но может быть что-то с вашей маршрутизацией?

+0

Этот тест предназначен только для проверки наличия у нас тегов в домашних, справочных и справочных страницах, а также содержат ли эти теги <title> «Главная страница» Microblog »,« About | Microblog »и« Help | Microblog ». Microblog - это имя приложения. В учебнике вместо «Home | Microblog» мы тестируем «Home | Ruby on Rails Tutorial Sample App» и т. Д. Я выполнил необходимые изменения для проверки правильного текста. – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Мой комментарий о символе трубы был основан на следующих рассуждениях: в файле app/views/static_pages/home.html.erb у нас есть <title><% = yield (: title)%> | Microblog и не <% = yield (: title) | Microblog%>, поэтому я был смущен тем, что избегал трубы из простого HTML-кода. Во всяком случае, я пробовал и не исправлял проблему. Это имеет смысл? –

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