Montei meu caso de teste e minha classe de serviço um pouco diferente do que foi apresentado nas aulas. Em resumo criei apenas uma classe de serviço de série (SerieService) com funções específicas paras inserir série, atualizar nome da série e remover série. Nesse cenário, montei apenas uma classe de teste referente ao meu SerieService com duas funções de teste para testar criar/remover série, sendo que estou usando um anotação para informar que o teste de remover depende do teste de criar porém estou com um erro e ACHO que está relacionado com o banco de dados em memória.
<?php
namespace Tests\Unit;
use App\Serie;
use App\Service\SerieService;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class SerieTest extends TestCase
{
use RefreshDatabase;
/** @var SerieService */
private $serieService;
private $nomeSerie = "teste série";
protected function setUp(): void
{
parent::setUp();
$this->serieService = new SerieService();
}
public function testCriarSerie()
{
$serie = $this->serieService->criarSerie($this->nomeSerie, 1, 1);
$this->assertInstanceOf(Serie::class, $serie);
$this->assertDatabaseHas('series', ['nome' => $this->nomeSerie]);
$this->assertDatabaseHas('series', ['id' => $serie->id]);
$this->assertDatabaseHas('temporadas', ['serie_id' => $serie->id]);
return $serie;
}
/**
* @depends testCriarSerie
*/
public function testRemoverSerie(Serie $serie)
{
$this->assertDatabaseHas('series', ['id' => $serie->id]);
$nomeSerieRemovida = $this->serieService->removerSerie($serie->id);
$this->assertIsString($nomeSerieRemovida);
$this->assertEquals($this->nomeSerie, $nomeSerieRemovida);
$this->assertDatabaseMissing('series', ['id' => $serie->id]);
}
}
Failed asserting that a row in the table [series] matches the attributes {
"id": 1
}.
The table is empty.
C:\Projetos\Alura\controle-series\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase.php:24
C:\Projetos\Alura\controle-series\tests\Unit\SerieTest.php:39