Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

0.0001 não funcionou na média

o meu método de test ficou assim:

    public function testMedia()
    {
        $joao = new Usuario('João');
        $marcos = new Usuario('Marcos');
        $jorge = new Usuario('jorge');

        $leilao = new Leilao("Nintendo Switch");

        $leilao->propoe(new Lance($marcos, 250));
        $leilao->propoe(new Lance($joao, 300));
        $leilao->propoe(new Lance($marcos, 400));

        $leiloeiro = new Avaliador();
        $leiloeiro->calculaMedia($leilao);        

        $mediaEsperada = 316.66666;

        $this->assertEquals($mediaEsperada, $leiloeiro->getMedia(), 0.00001);
    }

e o retorno da tela foi o seguinte:

There was 1 failure:

1) AvaliadorTest::testMedia
1.0E-5
Failed asserting that 316.6666666666667 matches expected 316.66666.

/home/natan/Cursos Alura/PHPunit/inicial/test/AvaliadorTeste.php:49

Utilizei o parâmetro 0.00001 para evitar este erro por arredondamento, mas o phpunit ainda assim considera que o cálculo está errado, pois calcula várias casas decimais acima do que eu eu gostaria. Quando experimentei colocar o valor esperado para 316.6666666666 o teste não retornou falha. Minha dúvida é se existe alguma forma de contornar essa falha quando para mim o valor com precisão de poucas casas decimais já for suficiente.

1 resposta
solução!

É possível utilizar a função number_format($numero,$qtd_digitos) para formatar o número com a precisão desejado.

vale destacar ainda que a versão atual do PHPUnit (7.4.3) não possui mais o parâmetro relativo a precisão