Подтвердить что ты не робот

Противоположность assert_select?

Я пишу приложение, где желательно проверить, нет ли у представления каких-либо функций - в частности, потому что эта функциональность должна быть представлена ​​только пользователям в определенной группе безопасности. Я ищу противоположность assert_selects, чтобы увидеть, что меню не отображается.

4b9b3361

Ответ 1

Взгляните на документы здесь:

http://apidock.com/rails/ActionController/Assertions/SelectorAssertions/assert_select

Из документов:

assert_select - это assertion that selects elements and makes one or more equality tests.

и из разделов тестов равенства:

Тест равенства может быть одним из следующих:

true - Утверждение истинно, если выбран хотя бы один элемент.

false - Утверждение истинно, если ни один элемент не выбран.

String/Regexp - утверждение истинно, если текстовое значение по меньшей мере одного элемент соответствует строке или регулярному выражению.

Целое - утверждение истинно, если именно это число элементов выбран.

Диапазон. Утверждение истинно, если количество выбранных элементов соответствует Диапазон.

Если критерий равенства не указан, утверждение верно, если хотя бы один выбранного элемента.

И простой пример:

   # Page contains no forms
   assert_select "form", false, "This page must contain no forms"

Ответ 2

Не забывайте, что вы всегда можете передать счетчик и установить его на ноль.

assert_select "a", {count: 0, text: "New"}, "This page must contain no anchors that say New"

Ответ 3

У меня была эта проблема, чтобы гарантировать, что НЕ была кнопка "Удалить", из многих кнопок. Принятый ответ не будет работать в этой ситуации, потому что есть уже несколько кнопок.

assert_select '.button' do |btn|
  btn.each do |b|
    assert_no_match 'Delete', b.to_s
  end
end

Однако мне очень нравится, как GantMan лучше отвечает!

Ответ 4

Вы можете легко определить свой собственный:

module ActionDispatch::Assertions::SelectorAssertions
  def assert_no_select(*a,&b) # try to think of a better name!
    begin
      assert_select(*a,&b)
    rescue AssertionFailedError
      return
    end
    raise "fail" # there should be a better built-in alternative
  end
end