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.
davy.ai
Test::More recomienda el uso de
is_deeply()
en lugar deeq_array()
yeq_hash()
porque proporciona mejores diagnósticos. Sin embargo, se ha mencionado en la documentación queeq_array()
yeq_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ónis_deeply()
y envolverla enok()
, como sigue: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ónok()
pasaría, lo cual podría ser confuso. Sería mejor utilizaris_deeply()
y probar la igualdad en lugar de la desigualdad.