Минитест + Капибара: как проверить, не содержит ли список опций опцию? - PullRequest
0 голосов
/ 12 октября 2019

В моем приложении у меня есть тег выбора, содержащий некоторые опции:

<select class="form-control" id="select-course-js">
     <option>course-1</option> 
     <option>course-2</option>
     <option>course-3</option>
</select>

Я хотел бы реализовать системный тест, который проверяет, есть ли опция курса-4. Можно ли это сделать с капибарой? если так - как? стек: rails5 + Minitest + Capybara

Обновление. Решение (данное Томасом Уолполом)

assert_no_select('select-course-js', with_options: ['course-4'])

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Вы можете проверить, что на странице нет выбора «select-course-js» с course-4 в качестве опции, с помощью

assert_no_select('select-course-js', with_options: ['course-4'])

, однако это не будет также подтверждать, что select-course-js selectнаходится на странице, поэтому вы, вероятно, захотите сделать оба действия:

assert_select('select-course-js')
assert_no_select('select-course-js', with_options: ['course-4'])

Другой вариант - использовать дополнительный блок фильтра

assert_select('select-course-js') do |el|
  el.has_no_selector?(:option, 'course-4')
end

, но ошибка не будет такой очевидной, еслитест не пройден.

0 голосов
/ 12 октября 2019

Один из способов - добавить идентификаторы к каждому option и проверить, существует ли он ...

<select class="form-control" id="select-course-js">
  <option id="crs-1">course-1</option> 
  <option id="crs-2">course-2</option>
  <option id="crs-3">course-3</option>
</select>

Затем просто проверьте, существует ли crs-4. Используемый вами метод будет зависеть от вашей конкретной логики, но вот пара примеров ...

assert_no_css('#select-course-js #crs-4')
page.has_css?('#select-course-js #crs-4')

Здесь вы можете найти другие методы для использования

...