Como posso usar Perl Test :: profunda :: cmp_deeply sem aumentar a contagem de teste?

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

  •  16-09-2019
  •  | 
  •  

Pergunta

Parece que Test::Deep foi inspirado por is_deeply . A minha pergunta é como eu faço parte cmp_deeply de um teste em vez de um teste por conta própria? Porque a minha lista de testes afirma apenas 8, mas toda vez que eu uso cmp_deeply, ele conta como um teste, fazendo meu número real de testes de 11 (porque eu chamo cmp_deeply 3 vezes) quando eu só tenho 8 funções. Eu não quero aumentar o número dos meus testes. Existe uma solução mais viável?

Foi útil?

Solução

Você deve usar eq_deeply vez:

Este é o mesmo que cmp_deeply() Só que apenas retorna verdadeiro ou falso. Ele não cria diagnósticos ...

Outras dicas

Há uma série de coisas que você pode fazer, mas sem saber mais dos detalhes em seus testes, é difícil saber qual é o mais apropriado:

  • Não plano para um número específico de testes.

    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 determinar quantos testes são a ser executado, o que faz sentido se você está testando alguma estrutura profunda e dinâmica cuja complexidade (e número de testes necessários) não é conhecido antecipadamente:

    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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top