2014-01-25 2 views
0

Когда я поднимаю ожидание того, что терпит неудачу, я получаю выход как этогоПочему rspec не является более подробным?

Failure/Error: it { should have_selector 'div.panel.panel-error', text: "asd" } 
     expected #has_selector?("div.panel.panel-error", {:text=>"asd"}) to return true, got false 

Это делает отладку реального nighmare, особенно когда текст просто капитализируется или имеет глупую Опечатку в нем. Как я могу получить RSpec, чтобы дать мне такой вывод:

Failure/Error: it { should have_selector 'div.panel.panel-error', text: "asd" } 
     expected #has_selector?("div.panel.panel-error", {:text=>"asd"}) to contain "You don't exist in our system!" true, got "You do not exist in Our system." 

Является ли это вариант формата, я могу добавить к моему .rspec файл?

Вот как шахта в настоящее время выглядит:

--color 
--drb 
--order default 

--format progress 
--format documentation 

ответ

0

Это не проблема с RSpec конфигурации, его больше, чтобы сделать с видом утверждения, что вы делаете. Вы просите Capybara найти элемент, который соответствует селектору CSS с типом элемента div, двумя классами и данным текстом. Селектор CSS просто не вернет никакого соответствия, потому что только две из трех частей селектора совпадают, и поскольку он никогда не извлекал элемент, который соответствует div.panel.panel-error, он не может сравнивать строки.

Чтобы получить более полезный вид вывода, который вы хотите, вам нужно будет выбрать элемент по элементу и классу, то есть div.panel.panel-error, а затем, предположив, что присутствует, вы можете утверждать, что текст является тем, чем он должен быть. Попробуйте:

find('div.panel.panel-error').text.should == 'asd' 

Два шага версия не совсем так элегантно, хотя, потому что вы не делаете прямое утверждение о субъекте теста (page).

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