Что означает страница и page.body в Капибаре
Я новичок, пытающийся протестировать мой Rails-проект с использованием Capybara, но меня смущает значение page и page.body, когда я пытаюсь обнаружить некоторую строку из моего div: (in:js=>true mode)
<div>"some content"</div>
Некоторые из моих испытаний пройдут с
page.should have_content "some content"
Некоторые пройдут с
page.body.should have_content "some content"
Я пытаюсь поместить контент, но только "page.body" даст мне некоторую ценную информацию, сама "страница" ничего не покажет мне, и я не могу найти какого-либо убедительного объяснения того, что сделали page и page.body. Может кто-нибудь мне помочь?
2 ответа
page - это текущий сеанс Capybara - вызов #find/#first/#visit/etc аналогичен вызову page.find(...), page.first(...) и т. д.
page.body возвращает HTML-источник страницы.
Большую часть времени вы не хотели бы вызывать совпадений на page.body, поэтому 99,9% времени вы должны использовать
page.should have_content(...)
или эквивалентный ожидаемый синтаксис. Это связано с тем, что вызов matchers на page.body на самом деле пропускает возвращаемую строку через анализатор и запрашивает ее, а не запрашивает браузер, в котором вы тестируете.
Я считаю, что этот синтаксис устарел, и вы должны изменить на:
expect(page).to have_content "some content"
Это проверит отображаемую страницу на предмет содержания, которое вы укажете. Если вы не уверены, воспроизводите ли вы ожидаемую страницу и хотите ли вы отладить свой тест, вы можете использовать puts page.body
сделать это.
Вы можете узнать больше о следует и ожидать здесь.