Rails-тестирование assert_select против assert_selector - PullRequest
0 голосов
/ 13 мая 2019

Насколько я понимаю, assert_select - это метод Капибары для проверки состояния элемента HTML <select>, а assert_selector - для проверки наличия любого элемента HTML и его внутреннего текста.

Почему тогда:

assert_select "h1", "Foobar"

Работа, когда h1 не является <select> элементом? Rails Guide кажется здесь несовместимым.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Похоже на недопонимание с терминами.

CSS-селекторы - это шаблоны, используемые для выбора элементов, которые вы хотите стилизовать. И assert_select используется для тестирования селекторов (не только для <select> элементов).

В вашем вопросе есть ссылка на Руководство по Rails. От там :

Метод assert_select позволяет запрашивать HTML-элементы ответа, используя простой, но мощный синтаксис.

Существует две формы assert_select:

assert_select(selector, [equality], [message]) обеспечивает выполнение условия равенства для выбранных элементов с помощью селектора. Селектор может быть выражением селектора CSS (String) или выражением со значениями подстановки.

assert_select(element, selector, [equality], [message]) обеспечивает выполнение условия равенства для всех выбранных элементов с помощью селектора, начиная с элемента (экземпляр Nokogiri::XML::Node or Nokogiri::XML::NodeSet) и его потомков.

Например, вы можете проверить содержимое элемента title в вашем ответе с помощью:

assert_select 'title', "Welcome to Rails Testing Guide"

Вы также можете использовать вложенные блоки assert_select для более глубокого изучения.

В следующем примере внутренний assert_select для li.menu_item выполняется в наборе элементов, выбранных внешним блоком:

assert_select 'ul.navigation' do
  assert_select 'li.menu_item'
end
0 голосов
/ 13 мая 2019

Вы, вероятно, хотите:

assert_selector "h1", text: "Foobar"
...