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

Erro na verificação do PHPUnit

Olá.

Usei o seguinte comando para verificar se havia erro no arquivo TestBuscadorDeCursos.php

C:\Users\Usuario\Desktop\Alura\composer\buscador-cursos-alura>vendor\bin\phpunit tests\TestBuscadorDeCursos.php

e ele apresenta o seguinte erro:

C:\Users\Usuario\Desktop\Alura\composer\buscador-cursos-alura>vendor\bin\phpunit tests\TestBuscadorDeCursos.php
PHP Parse error:  syntax error, unexpected end of file in C:\Users\Usuario\Desktop\Alura\composer\buscador-cursos-alura\tests\TestBuscadorDeCursos.php on line 65

Parse error: syntax error, unexpected end of file in C:\Users\Usuario\Desktop\Alura\composer\buscador-cursos-alura\tests\TestBuscadorDeCursos.php on line 65

mas verifiquei o código varias vezes e comparei com o do instrutor também mas não encontrei o erro

segue o código:

<?php

namespace Alura\BuscadorDeCursos\Tests;

use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\ClientInterface;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
use Symfony\Component\DomCrawler\Crawler;

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(StreamInterface::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]);
    }
}

Desde já, agradeço.

3 respostas
solução!

Qual sua versão do PHP, Lucas?

A definição da variável $html como eu fiz só funciona da versão 7.3 pra cima:

https://www.php.net/manual/pt_BR/migration73.new-features.php#migration73.new-features.core.heredoc

Bom dia Vinicius.

Minha versão é a 7.1, atualizei para a versão 7.3.9 e deu certo valeu.

;-)

Abração e bons estudos!