es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función is_deeply() negada en Test::More

Test::More tiene la función is_deeply() y menciona en la documentación que debería usarse en lugar de eq_array() o eq_hash() porque proporciona mejores diagnósticos, y afirma …Podrían ser obsoletas en futuras versiones.

Ahora estoy reemplazando el uso de las funciones eq_...() por is_deeply() pero me encuentro con un problema, no existe la función is_not_deeply() u otra similar, y tengo una prueba como esta:

ok (!eq_hash(\%h1, \%h2));

¿Existe una alternativa idiomática que pueda usar para probar desigualdad profunda, preferiblemente usando Test::More?

A diferencia de eq_hash(), que simplemente devuelve verdadero o falso y debe ser envuelta en ok(), is_deeply() en sí mismo es una prueba. Entonces, si la envuelves en “ok()” de la siguiente manera:

ok (!is_deeply(\%h1, \%h2));

Ahora hay DOS pruebas, is_deeply() que está fallando y ok(), que pasaría.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Test::More recomienda el uso de is_deeply() en lugar de eq_array() y eq_hash() porque proporciona mejores diagnósticos. Sin embargo, se ha mencionado en la documentación que eq_array() y eq_hash() pueden quedar obsoletas en futuras versiones.

    Si necesitas probar la desigualdad profunda, Test::More no proporciona una alternativa idiomática a is_deeply(). Una solución es negar la función is_deeply() y envolverla en ok(), como sigue:

    ok(!is_deeply(\%h1, \%h2));
    

    Sin embargo, cabe destacar que esto resultaría en dos pruebas en lugar de una. La función is_deeply() fallaría, pero la función ok() pasaría, lo cual podría ser confuso. Sería mejor utilizar is_deeply() y probar la igualdad en lugar de la desigualdad.

Comments are closed.