Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quando tento executar o teste nenhum leilão é retornado!

Criei a classe de mock da seguinte maneira:

class LeilaoDaoMock extends LeilaoDao
{
    private array $leiloes = [];

    public function salvar(Leilao $leilao): void
    {
        $this->leiloes[] = $leilao;
    }

    public function recuperarNaoFinalizados(): array
    {
        return array_filter($this->leiloes, function (Leilao $leilao) {
            return !$leilao->estaFinalizado();
        });
    }

    public function recuperarFinalizados(): array
    {
        return array_filter($this->leiloes, function (Leilao $leilao) {
            return $leilao->estaFinalizado();
        });
    }

    public function atualiza(Leilao $leilao): void
    {}
}

E o método de teste da seguinte maneira:

public function testLeiloesComMaisDeUmaSemanaDevemSerEncerrados()
    {
        // Given
        $fiat174 = new Leilao('Fiat 147 0km', new DateTimeImmutable('8 days ago'));
        $mareia = new Leilao('Mareia reformado', new DateTimeImmutable('10 days ago'));

        $leilaoDao = new LeilaoDaoMock();
        $leilaoDao->salva($fiat174);
        $leilaoDao->salva($mareia);

        $encerrador = new Encerrador($leilaoDao);

        // When
        $encerrador->encerra();

        // Then
        $leiloesFinalizados = $leilaoDao->recuperarFinalizados();
        static::assertCount(2, $leiloesFinalizados);
        static::assertEquals('Fiat 147 0km', $leiloesFinalizados[0]->recuperarDescricao());
        static::assertEquals('Mareia reformado', $leiloesFinalizados[1]->recuperarDescricao());
    }

Mas sempre que executo os teste recebo o seguinte log:

PHPUnit 8.5.35 by Sebastian Bergmann and contributors.

..............F                                                   15 / 15 (100%)

Time: 45 ms, Memory: 4.00 MB

There was 1 failure:

1) Alura\Leilao\Tests\Service\EncerradorTest::testLeiloesComMaisDeUmaSemanaDevemSerEncerrados
Failed asserting that actual size 0 matches expected size 2.

/home/guilherme/PhpProjects/Curso-Mock/projeto-inicial/tests/Service/EncerradorTest.php:57

FAILURES!
Tests: 15, Assertions: 26, Failures: 1.

Não estou conseguinte entender o motivo do por que este teste está dando errado... help plz! XD

2 respostas
solução!

Olá, Guilherme!

Tente alterar salva($fiat174) e salva($mareia) para salvar($fiat174) e salvar($mareia) no seu método de teste e veja se isso resolve o problema.

Espero ter ajudado e bons estudos!

Era isso mesmo... cara, VSCode não tá me ajudando muito... :(