¿Cómo puedo usar la prueba de Perl :: :: profundo cmp_deeply sin aumentar el recuento de prueba?

StackOverflow https://stackoverflow.com/questions/1274756

  •  16-09-2019
  •  | 
  •  

Pregunta

Parece que Test::Deep se inspiró en is_deeply . Mi pregunta es ¿cómo hago parte cmp_deeply de una prueba en lugar de una prueba por sí solo? Debido a mi lista de pruebas sólo afirma 8, pero cada vez que utilizo cmp_deeply, se cuenta como una prueba, haciendo que mi número real de pruebas 11 (porque yo llamo cmp_deeply 3 veces) cuando sólo tengo 8 funciones. No quiero para aumentar el número de mis pruebas. ¿Hay una solución más viable?

¿Fue útil?

Solución

Debe utilizar eq_deeply lugar:

  

Este es el mismo que cmp_deeply()   excepto que sólo devuelve verdadero o falso.   No crea diagnóstico ...

Otros consejos

Hay una serie de cosas que puede hacer, pero sin saber más de los detalles de sus pruebas, es difícil saber cuál es el más adecuado:

  • No planear para un número específico de pruebas.

    use Test::More;
    
    all(
        cmp_deeply($got0, $expected0),
        cmp_deeply($got1, $expected1),
        cmp_deeply($got2, $expected2)
       );
    
    # ... your other 7 tests
    done_testing();  # signals that we're all done.. exiting normally.
    
  • dinámicamente determinar cuántas pruebas están en ejecución, lo cual tiene sentido si está probando un poco de estructura profunda y dinámica cuya complejidad (y el número de pruebas requeridas) no se conoce de antemano:

    use Test::More;
    use Test::Deep;
    
    # perhaps this is in some sort of loop?
    cmp_deeply($got0, $expected0);  $numTests++;
    cmp_deeply($got1, $expected1);  $numTests++;
    cmp_deeply($got2, $expected2);  $numTests++;
    
    # ... your other 7 tests
    
    # TAP output must be either at the beginning or end of all output
    plan tests => $numTests + 7;
    
    # no more tests here!
    exit;
    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top