Я пытаюсь написать тест для формы Bootstrap, используя rspec.У меня есть следующий код:
<div id="published" class="col-sm-auto">
<div class="custom-control custom-radio custom-control-inline">
<%= form.radio_button :published, true, checked: page.published?, class: 'custom-control-input' %>
<%= form.label :published, 'Published', value: true, class: 'custom-control-label' %>
</div>
<div class="custom-control custom-radio custom-control-inline">
<%= form.radio_button :published, false, checked: !page.published?, class: 'custom-control-input' %>
<%= form.label :published, 'Hidden', value: false, class: 'custom-control-label' %>
</div>
</div>
, который генерирует следующий HTML-код:
<div id="published" class="col-sm-auto">
<div class="custom-control custom-radio custom-control-inline">
<input class="custom-control-input" type="radio" value="true" name="page[published]" id="page_published_true" />
<label class="custom-control-label" for="page_published_true">Published</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input class="custom-control-input" type="radio" value="false" checked="checked" name="page[published]" id="page_published_false" />
<label class="custom-control-label" for="page_published_false">Hidden</label>
</div>
</div>
Когда я запускаю этот тест, он завершается с сообщением
it 'should default to unpublished' do
expect(page).to have_checked_field('Hidden')
end
выдача сообщения expected to find visible field "page[published]" that is checked and not disabled but there were no matches. Also found "", "", which matched the selector but not all filters.
Глядя на HTML в инспекторе, поле видно и не отключено, и есть метка, соответствующая тексту.Я понятия не имею, о чем эти две пустые строки.
Пожалуйста, кто-нибудь может сказать мне, почему have_checked_field
не соответствует?Я действительно не заинтересован в написании более хрупкого теста, который использует has_css
или has_xpath
для поиска входного тега с определенным идентификатором - суть в том, что пользователь должен увидеть поле с надписью «Hidden», и оно должнобыть проверенным, независимо от того, что происходит за кулисами!