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