2016-08-21 6 views
2

У меня есть следующий тест:Получение assert_select, чтобы показать мне, что на самом деле был элемент

test "users title when logged out" do 
    get users_path 
    assert_select "title", 'Correct title" 
end 

Если мы предположим, что users_path возвращает страницу с <title>Wrong title</title>, то я получаю следующий результат:

FAIL["test_users_title_when_logged_out", SiteLayoutTest, 1.0830602300120518] 
test_users_title_when_logged_out#SiteLayoutTest (1.08s) 
     Expected at least 1 element matching "title", found 0.. 
     Expected 0 to be >= 1. 
     test/integration/site_layout_test.rb:37:in `block in <class:SiteLayoutTest>' 

Я хотел бы заменить assert_select на что-то вроде assert_equal "Correct title", page.title, так что на самом деле сообщение об ошибке тестирования показывает мне, что заголовок страницы, что значительно облегчило бы трассировку проблемы! (Естественно, на странице отображается правильный заголовок в режиме разработки ...)

Однако, page.title, похоже, недоступен, и мои усилия по поиску только открывают такие вещи, как «вы можете сделать это с Capybara», который для этой цели является немного громоздким!

Есть ли способ написать этот тест, чтобы вместо этого он отображал что-то вроде Expected page title to be "Correct title" but got "Wrong title"? [Редактировать для наглядности: «Неверный заголовок» - это название на возвращенной странице, а не буквальная строка, то есть мне нужна ошибка, чтобы сообщить мне, что было на самом деле возвращено.]

+1

Пробовали ли вы 'assert_select «title», «Правильное название», «Предполагаемое название страницы должно быть« Правильное название », но получило« Неверный заголовок »?? –

+0

Не знаете, как это помогает, если я помещаю« Неверный заголовок »в качестве строки? I хотите, чтобы он отображал фактическое название, которое находится на странице, которая возвращает 'user_path' ... –

+0

Это помогает, когда вы хотите постоянно видеть сообщение об ошибке. теперь, чего вы пытаетесь достичь. Вы ищете Rspec как выход, но я понятия не имею в мини-классе. Но похоже, что вам нужно запланировать обезьяну, чтобы переопределить значение по умолчанию. –

ответ

0

Похоже, что ответ assert_equal 'Correct title', css_select('title').first.content.

Это дает более полезное сообщение об ошибке

FAIL["test_users_title_when_logged_out", SiteLayoutTest, 1.0830602300120518] 
test_users_title_when_logged_out#SiteLayoutTest (1.08s) 
Expected: "Correct title" 
    Actual: "Wrong title" 

(хотя я подозреваю, что это может быть лучше стиль, чтобы вернуться к исходному assert_select когда я нашел эту проблему!)