Boa tarde. Estou tendo o seguinte erro:
Boa tarde. Estou tendo o seguinte erro:
Oi Karolina, tudo bem?
Aparentemente você esqueceu de importar a classeTestCase
, o erro informa que a classe não foi encontrada.
Importe o TestCase
desse namespace: use PHPUnit\Framework\TestCase;
.
Já faz um tempinho que não mecho com PHP, mas acredito que seja isso.
Bons estudos.
Boa tarde. Parece que achou a classe, mas agora estou tendo erro nesse método:
Oi Karolina,
Não dá para ver o código porque a mensagem de erro atrapalha na visualização.
Veja se a linha, na qual a mensagem de erro encobre, está dessa maneira: $stream = $this->createMock(Stream::class);
. O erro informa que o método expects
não foi encontrado, provavelmente o mock do Stream não criado corretamente.
Está como copiei o código do professor
Deixe como eu falei para ver se funciona: $stream = $this->createMock(Stream::class);
Importe a classe Stream também: use GuzzleHttp\Psr7\Stream;
Caso continue informando o erro tente rodar os testes, porque às vezes é problema no VS Code, se não rodar você volta ao fórum com erro que o compilador informou . Eu fiz esse treinamento há bastante tempo, abri o projeto e o VS Code informa vários métodos não encontrados também, porém funciona corretamente.
Boa noite. Ainda nada. Tentei executar no terminal depois da correção e acontece isso:
Karollina, tem como mostrar o erro completo?
Bom dia. Desculpe a demora.
O erro que aparece no terminal é esse:
E em passando o mouse em cima do método:
Código completo:
<?php
use Psr\Http\Message\StreamInterface;
use GuzzleHttp\Psr7\Stream;
use Symfony\Component\DomCrawler\Crawler;
use Alura\BuscadorDeCursos\Buscador;
use PHPUnit\Framework\TestCase;
class TestBuscadorDeCursos extends TestCase
{
private $httpClientMock;
private $url = 'url-teste';
protected function setUp(): void
{
$html = <<<FIM
<html>
<body>
<span class="card-curso__nome">Curso Teste 1</span>
<span class="card-curso__nome">Curso Teste 2</span>
<span class="card-curso__nome">Curso Teste 3</span>
</body>
</html>
FIM;
$stream = $this->createMock(Stream::class);
$stream
->expects($this->once())
->method('__toString')
->willReturn($html);
$response = $this->createMock(ResponseInterface::class);
$response
->expects($this->once())
->method('getBody')
->willReturn($stream);
$httpClient = $this
->createMock(ClientInterface::class);
$httpClient
->expects($this->once())
->method('request')
->with('GET', $this->url)
->willReturn($response);
$this->httpClientMock = $httpClient;
}
public function testBuscadorDeveRetornarCursos()
{
$crawler = new Crawler();
$buscador = new Buscador($this->httpClientMock, $crawler);
$cursos = $buscador->buscar($this->url);
$this->assertCount(3, $cursos);
$this->assertEquals('Curso Teste 1', $cursos[0]);
$this->assertEquals('Curso Teste 2', $cursos[1]);
$this->assertEquals('Curso Teste 3', $cursos[2]);
}
}
Oi Karolina,
Não está reconhecendo a classe TestCase do PHPUnit, parece ser algum problema com PHPUnit, talvez a instalação. É bom refazer os passos da aula e caso não consiga você abre outro tópico para que outra pessoa possa te auxiliar.
Essa aula do treinamento é apenas um spoiler de uma ótima formação de testes do mesmo instrutor, vale a pena dar uma conferida.