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

Mudei a criação da conexao sqlite, problema voltou da inserção no banco nao ser excluida.

<?php

namespace Alura\Leilao\tests\Integration\Dao;

use Alura\Leilao\Dao\Leilao as LeilaoDao;
use Alura\Leilao\Infra\ConnectionCreator;
use Alura\Leilao\Model\Leilao;
use PHPUnit\Framework\TestCase;

class LeilaoDaoTest extends TestCase
{
    private static \PDO $pdo;

    public static function setUpBeforeClass(): void
    {
        self::$pdo = new \PDO('sqlite::memory:');
        self::$pdo->exec('create table leiloes (
                id INTEGER primary key,
                descricao TEXT,
                finalizado BOOL,
                dataInicio TEXT
            );');
    }

    protected function setUp(): void
    {
        self::$pdo->beginTransaction();
    }

    public function testInsercaoEBuscaDevemFuncionar()
    {
        $leilao = new Leilao('Variante 0KM');
        $leilaoDao = new LeilaoDao(self::$pdo);
        $leilaoDao->salva($leilao);

        // act
        $leiloes = $leilaoDao->recuperarNaoFinalizados();

        //assert
        self::assertCount(1,$leiloes);      
        self::assertContainsOnlyInstancesOf(Leilao::class,$leiloes);
        self::assertSame(
            'Variante 0KM',
            $leiloes[0]->recuperarDescricao()
        );
    }

    protected function tearDown(): void
    {
        self::$pdo->rollBack();
    }
}

Quando coloquei a criação da conexao no metodo setUpBeforeClass(), teste parou de retirar a inserção no banco e me apresentou esse erro depois da segunda tentativa.

There was 1 failure:

1) Alura\Leilao\tests\Integration\Dao\LeilaoDaoTest::testInsercaoEBuscaDevemFuncionar
Failed asserting that actual size 2 matches expected size 1.

F:\Material de Estudo\Arquiteto PHP\TestesDeIntegracaoComPHP_Testando o acesso a API
e  ao banco de dados\codigo\tests\Integration\Dao\LeilaoDaoTest.php:45

FAILURES!
Tests: 18, Assertions: 36, Failures: 1.

2 respostas

Estou usando php 7.4, quando volto para o comando

$this->pdo = ConnectionCreator::getConnection();

rollback funciona corretamente, mas utilizando o sqlite memory isso nao esta acontecendo , aparece o erro acima

solução!

No curso de mocks, 2.Conhecendo Mocks e Stubs No item 8 personlizando Mock, por um descuido meu, esqueci de injetar a depencia na classe Leilao, no seu construtor. (no minuto 2:13 do video), incrivelmente segui nesse curso e nesse sem problemas aparente, so percebi agora XD. Basicamente o meu problema e que nao estava utilizando a conexao sqlite::memory.

class Leilao

 private $con;

    public function __construct(\PDO $con)
    {
        $this->con = $con;
    }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software