ruby on rails - test - Lo opuesto de assert_select?
rails test methods (4)
Eche un vistazo a los documentos aquí:
http://apidock.com/rails/ActionController/Assertions/SelectorAssertions/assert_select
De los documentos:
assert_select es una assertion that selects elements and makes one or more equality tests.
y de las secciones de pruebas de igualdad:
La prueba de igualdad puede ser una de las siguientes:
verdadero - La afirmación es verdadera si al menos un elemento ha sido seleccionado.
falso - La afirmación es verdadera si no se seleccionó ningún elemento.
Cadena / Regexp: la aserción es verdadera si el valor de texto de al menos un elemento coincide con la cadena o la expresión regular.
Entero - La afirmación es verdadera si se selecciona exactamente esa cantidad de elementos.
Rango: la aserción es verdadera si la cantidad de elementos seleccionados se ajusta al rango.
Si no se especifica ninguna prueba de igualdad, la aserción es verdadera si al menos se seleccionó un elemento.
Y un simple ejemplo:
# Page contains no forms
assert_select "form", false, "This page must contain no forms"
Estoy escribiendo una aplicación en la que es deseable comprobar si una vista no tiene alguna funcionalidad, en particular porque esa funcionalidad debe presentarse solo a los usuarios de cierto grupo de seguridad. Estoy buscando lo contrario de assert_selects para ver que no se represente un menú.
No olvides que siempre puedes pasar el conteo y ponerlo en cero.
assert_select "a", {count: 0, text: "New"}, "This page must contain no anchors that say New"
Tuve este problema para asegurar que NO HAYA un botón ''Eliminar'', de muchos botones. La respuesta aceptada no funcionaría en esta situación porque ya hay varios botones.
assert_select ''.button'' do |btn|
btn.each do |b|
assert_no_match ''Delete'', b.to_s
end
end
Sin embargo, ¡me gusta mucho la respuesta de GantMan!
Usted puede definir fácilmente su propio:
module ActionDispatch::Assertions::SelectorAssertions
def refute_select(*a,&b)
begin
assert_select(*a,&b)
rescue AssertionFailedError
return
end
raise "fail" # there should be a better built-in alternative
end
end