¿Lo contrario de assert_select?

Estoy escribiendo una aplicación en la que es conveniente verificar 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 un menú no está renderizado.

Echa un vistazo a los documentos aquí:

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

De la documentación:

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 seleccionado.

falso: la afirmación es verdadera si no se ha seleccionado ningún elemento.

Cadena / expresión regular: la afirmació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 ese número de elementos.

Rango: la afirmación es verdadera si el número de elementos seleccionados se ajusta al rango.

Si no se especifica una prueba de igualdad, la afirmación es verdadera si se selecciona al menos un elemento.

Y un simple ejemplo:

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

No olvide que siempre puede pasar el conteo y establecerlo en cero.

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

Tuve este problema para asegurarme de que NO HABÍA 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, realmente me gusta más 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