Wie kann ich Perl-Test :: Tief :: cmp_deeply, ohne die Testzahl zu erhöhen?

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

  •  16-09-2019
  •  | 
  •  

Frage

Es sieht aus wie Test::Deep wurde inspiriert von is_deeply . Meine Frage ist, wie kann ich cmp_deeply Teil eines Tests anstelle eines Tests auf seiner eigenen machen? Weil meine Liste der Tests nur 8 Staaten, aber jedes Mal wenn ich cmp_deeply verwenden, zählt es als Test, meine tatsächliche Anzahl der Tests 11 zu machen (weil ich nenne cmp_deeply 3 mal), wenn ich nur 8 Funktionen. Ich möchte nicht, die Zahl meiner Tests erhöhen. Gibt es eine praktikable Lösung?

War es hilfreich?

Lösung

Sie sollten verwenden eq_deeply statt:

  

Dies ist das gleiche wie cmp_deeply()   außer es nur wahr oder falsch zurückgibt.   Dabei spielt es keine Diagnose erstellen ...

Andere Tipps

Es gibt eine Reihe von Dingen, die Sie tun können, aber ohne mehr über die Besonderheiten in Ihren Tests zu wissen, es ist schwer zu wissen, welche am besten geeignet ist:

  • Sie nicht für eine bestimmte Anzahl von Tests planen.

    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.
    
  • dynamisch bestimmen, wie viele Tests sind Lauf sind, was Sinn macht, wenn Sie einige tiefe und dynamische Struktur, deren Komplexität (und die Anzahl der Tests erforderlich) testen ist nicht im Voraus bekannt:

    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;
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top