Come posso usare il test di Perl :: :: profonda cmp_deeply senza aumentare il numero di test?
Domanda
Si presenta come Test::Deep
è stato ispirato da is_deeply
. La mia domanda è come faccio a fare parte cmp_deeply
di un test, invece di una prova di per sé? Perché il mio elenco delle prove afferma solo l'8, ma ogni volta che lo uso cmp_deeply
, conta come un test, rendendo il mio numero effettivo di test 11 (perché io chiamo cmp_deeply
3 volte), quando ho solo 8 funzioni. Non voglio per aumentare il numero dei miei test. C'è una soluzione più praticabile?
Soluzione
Si dovrebbe usare eq_deeply
invece:
Questa è la stessa di
cmp_deeply()
eccetto che restituisce solo vero o falso. Non crea la diagnostica ...
Altri suggerimenti
Ci sono una serie di cose che potete fare, ma senza sapere di più delle specifiche nei test è difficile sapere quale è la più appropriata:
-
Non avete in programma per un numero specifico di test.
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.
-
dinamicamente determinare quanti test sono in esecuzione, che ha un senso se si sta testando qualche struttura profonda e dinamica la cui complessità (e il numero di test richiesti) non è noto in anticipo:
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;