5

Aparentemente no hay assert_false en Test :: Unit. ¿Cómo lo agregaría extendiendo las afirmaciones y agregando el archivo config/initializers/assertions_helper.rb?¿Cómo extender las afirmaciones de Ruby Test :: Unit para incluir assert_false?

¿Es esta la mejor manera de hacerlo? No quiero modificar test/unit/assertions.rb.

Por cierto, no creo que sea redundante. Yo estaba usando assert_equal false, something_to_evaluate. El problema con este enfoque es que es fácil usar accidentalmente assert false, something_to_evaluate. Esto siempre fallará, no genera un error o advertencia, e invita a errores a las pruebas.

+1

@ B Siete, ¿viste esta [link] (http://www.natontesting.com/2009/07/21/add-assert_false-to-rubys-testunit/)? –

+0

¿Qué vínculo? .... –

+1

http://www.natontesting.com/2009/07/21/add-assert_false-to-rubys-testunit/, el enlace de trabajo es un hipervínculo pero ve lo mismo arriba. –

Respuesta

3

Sólo tiene que añadir una explosión frente a lo que está afirmando:

assert !(something_false) 
9

Si está utilizando Minitest (reemplazado Test :: Unidad en Ruby 1.9+), entonces usted puede utilizar el método refute, que es el inverso de assert.

+0

Esta es la respuesta correcta. – joncodo

4

Personalmente, creemos que el nombre assert_false mejor que refute porque es consistente con todas las otras afirmaciones, y también es por lo general más alineado con la semántica (similares a usar en lugar de if !conditionunless).

Si se siente de la misma manera y quiere assert_false, añadirlo en test/test_helper.rb:

class ActiveSupport::TestCase 

    ... 

    def assert_false(test, message="Expected: false. Actual: #{test}.") 
    assert_equal false, test, message 
    end 

end 

EDITAR: Tenga en cuenta que assert !test (sugerido en otra parte) no funcionaría si test es nula (cero es cierto, y probablemente queremos que assert_false(nil) falle). Entonces esta es una comparación directa a false.

4

Rails 4 tiene assert_not que hace lo que quiere.

test "requires valid url" do 
    @mymodel.url = "bogus!" 
    assert_not @mymodel.valid? 
end 
Cuestiones relacionadas