2
respostas

ArgumentCountError: Too few arguments to function AvaliadorTest::testDeveRetornarOMaiorValor(), 0 passed

Estou acompanhado o curso, porém utilizando o phpunit12.2 e estou tendo o seguinte erro:

  1. AvaliadorTest::testDeveRetornarOMaiorValor
    ArgumentCountError: Too few arguments to function AvaliadorTest::testDeveRetornarOMaiorValor(), 0 passed in /var/www/alura/phpunit-tdd/1262-phpunit-aula0-projeto-inicial/vendor/phpunit/phpunit/src/Framework/TestCase.php on line 1286 and exactly 1 expected

/var/www/alura/phpunit-tdd/1262-phpunit-aula0-projeto-inicial/tests/services/AvaliadorTest.php:12

/**
     * @dataProvider entregaLeiloes
     */
    public function testDeveRetornarOMaiorValor($leilao)
    {
        $leiloeiro = new \Alura\Leilao\Service\Avaliador();
        $leiloeiro->avalia($leilao);

        $maiorValor = $leiloeiro->getMaiorValor();

        $this->assertEquals(2500.00, $maiorValor);
    }

public static function leilaoEmOrdemCrescente()
{
$leilao = new \Alura\Leilao\Model\Leilao('Celular Samsung Galaxy S21');

    $maria = new \Alura\Leilao\Model\Usuario('Maria');
    $joao = new \Alura\Leilao\Model\Usuario('João');
    $fernando = new \Alura\Leilao\Model\Usuario('Fernando');

    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($maria, 1700.00));
    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($joao, 2000.00));
    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($fernando, 2500.00));

    return $leilao;
}

public static function leilaoEmOrdemDecrescente()
{
$leilao = new \Alura\Leilao\Model\Leilao('Celular Samsung Galaxy S21');

    $maria = new \Alura\Leilao\Model\Usuario('Maria');
    $joao = new \Alura\Leilao\Model\Usuario('João');
    $fernando = new \Alura\Leilao\Model\Usuario('Fernando');

    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($fernando, 2500.00));
    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($joao, 2000.00));
    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($maria, 1700.00));

    return $leilao;
}
```
```
public static function leilaoEmOrdemAleatoria()

{

    $leilao = new \Alura\Leilao\Model\Leilao('Celular Samsung Galaxy S21');
    
    $maria = new \Alura\Leilao\Model\Usuario('Maria');
    $joao = new \Alura\Leilao\Model\Usuario('João');
    $fernando = new \Alura\Leilao\Model\Usuario('Fernando');

    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($joao, 2000.00));
    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($fernando, 2500.00));
    $leilao->recebeLance(new \Alura\Leilao\Model\Lance($maria, 1700.00));

    return $leilao;
}
```
```
public static function entregaLeiloes()
{
    return [
        [self::leilaoEmOrdemCrescente()],
        [self::leilaoEmOrdemDecrescente()],
        [self::leilaoEmOrdemAleatoria()],
    ];
}
```
2 respostas

Consegui fazer o meu teste passas. Detalhe simples, segue o código

#[DataProvider('entregaLeiloes')]
    public function testDeveRetornarOMaiorValor(Leilao $leilao)
    {
        $leiloeiro = new \Alura\Leilao\Service\Avaliador();
        $leiloeiro->avalia($leilao);

        $maiorValor = $leiloeiro->getMaiorValor();

        $this->assertEquals(2500.00, $maiorValor);
    }
public static function leilaoEmOrdemCrescente(){...}
public static function leilaoEmOrdemDecrescente(){...}
public static function leilaoEmOrdemAleatoria(){...}
public static function entregaLeiloes()
    {
        return [
            [self::leilaoEmOrdemCrescente()],
            [self::leilaoEmOrdemDecrescente()],
            [self::leilaoEmOrdemAleatoria()],
        ];
    }
    ```

Bom dia, Cíntia! Tudo bem?

Fico feliz que tenha resolvido o problema que estava tendo com o seu teste! Além disso, agradeço por compartilhar a solução em forma de código, pois, tenho certeza que ajudará outros alunos que enfrentarem o mesmo problema.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!