Я пишу приложение, где желательно проверить, нет ли у представления каких-либо функций - в частности, потому что эта функциональность должна быть представлена только пользователям в определенной группе безопасности. Я ищу противоположность assert_selects, чтобы увидеть, что меню не отображается.
Противоположность assert_select?
Ответ 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