Следуя руководству 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
Я продолжал расследование причин этой проблемы, но ничего не нашел убедительное до сих пор.
Есть идеи?
Действительно, я не знаю, но попытаетесь ли вы заменить символ трубы? или избежать его? – rfellons
@fellons Это замечательное замечание, я не думал об этом. Но я просто посмотрел файлы, и бывает, что символ канала не находится в тегах <%= ... %>. Я все равно заменил его тире, но получил те же результаты теста. Я также избежал этого, но тест все равно не прошел. Очень странно. Это может быть связано с версией драгоценных камней, которые я использую. –
Возможно, здесь вы можете найти howto debug whats. https://coderwall.com/p/bbxb8g/use-ruby-debugger-when-debugging-rspecs – rfellons