5
respostas

Erro ao executar teste

Ao executar o primeiro teste, tive o seguinte erro retornado:

1) Tests\Unit\TemporadaTest::testExample
Error: Call to a member function connection() on null

D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1255
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1221
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1051
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:968
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1004
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasRelationships.php:334
D:\controle-series\controle-series\app\Temporada.php:15
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php:415
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php:401
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php:333
D:\controle-series\controle-series\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1525
D:\controle-series\controle-series\tests\Unit\TemporadaTest.php:21

Copiei e colei o código do instrutor, mesmo assim continua dando o mesmo erro. Fui ver a linha 21 do arquivo TemporadaTest.php e temos a seguinte linha:

  $temporada->episodios->add($episodio1);

Podem me ajudar?

5 respostas

Olá. Você pode postar o código completo da sua classe de testes, por favor?

Vai ficar mais fácil de tentar te ajudar.

Posso sim

<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;
use App\Temporada;
use App\Episodio;

class TemporadaTest extends TestCase
{

    public function testExample()
    {
        $temporada = new Temporada();
        $episodio1 = new Episodio();
        $episodio1->assistido = true;
        $episodio2 = new Episodio();
        $episodio2->assistido = false;
        $episodio3 = new Episodio();
        $episodio3->assistido = true;
        $temporada->episodios->add($episodio1);
        $temporada->episodios->add($episodio2);
        $temporada->episodios->add($episodio3);


       $episodiosAssistidos =  $temporada->getEpAssistidos();
       $this->assertCount(2, $episodiosAssistidos);
    }

}

O problema é que você está estendendo da classe TestCase errada.

Você deveria estar estendendo da classe TestCase do Laravel, e não diretamente do PHPUnit.

Troque, no início deste arquivo, use PHPUnit\Framework\TestCase; por use Tests\TestCase;

Isso deve resolver. :-)

Deu certo! Muito obrigado.

Opa, que bom. Não se esqueça de marcar a resposta como solução. :-)