1
resposta

Laravel+PHPUNIT retornando erro 404 em $this->get() ou $this->post

Olá Pessoal! Vou descrever agora um problema que vem me perseguindo a 2 dias.

Tenho um projeto que utiliza o Laravel 5.8, ele está rodando em um servidor amazon aws ec2. Trabalho nele utilizando os arquivos diretamente online ( nao uso localhost e depois subo, trabalho nele no servidor online mesmo essa informação pode vir a ser útil)

Então, essa semana vi uns cursos aqui na alura de tdd e phpunit e pela primeira vez comecei a utilizar. Porém nem tudo são flores.

Em um arquivo de teste em \tests\Feature\ExampleTest.php tenho o seguinte teste:

public function testBasicTest()
    {
      $response = $this->get('/');
      $response->assertStatus(200);
    }

O que é um teste beeeem simples, correto? errado!!! por que toda vez que eu rodo o comando

vendor/bin/phpunit --filter testBasicTest

ele retorna:

Time: 149 ms, Memory: 24.00 MB

There was 1 failure:

1) Tests\Feature\ExampleTest::testBasicTest
Expected status code 200 but received 404.
Failed asserting that false is true.

/var/www/html/corrijame/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:151
/var/www/html/corrijame/tests/Feature/ExampleTest.php:18

já me certifiquei e essa url está configurada em meu \routes\web.php inclusive ela aparece quando executo: php artisan route:list

+--------+----------+-----------------------------------------------------------------+------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------+
| Domain | Method   | URI                                                             | Name             | Action                                                                               | Middleware                                                |
+--------+----------+-----------------------------------------------------------------+------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------+
|        | GET|HEAD | /                                                               |                  | App\Http\Controllers\AssineController@index                                          | web                                                       |

Já testei com outras urls, tanto get, quanto post e sempre dão o mesmo problema. Lembrando que Tentando acessar via navegador acessa a página normalmente.

Vi em alguns forums e sempre mandam conferir o APP_URL no meu arquivo .ENV

e ele está assim:

APP_URL=http://34.203.188.127/corrijame/

Que no caso acima é meu ip do servidor a pasta onde o laravel está instalado (é um servidor de desenvolvimento apenas por isso está utilizando IP).

Outra coisa que notei em minhas pesquisas é que todos utilizam localhost, isso me veio a questionar se o phpunit possa nao funcionar online, porém nao consegui confirmar essa teoria ainda.

Enfim, sabem me dizer o que estou fazendo de errado?

Agradeço desde já!

1 resposta

Oi João, tudo bom?

Quando acessamos por fora, faz sentido usar o ip. Porém, o laravel acessa a aplicação de dentro do servidor então vale a pena criar um arquivo .env.test sobrescrevendo o APP_URL para localhost. Algo como:

APP_URL=http://127.0.0.1:8000/
ou
APP_URL=http://localhost:8000/

No exemplo eu usei a porta padrão do laravel mas vale a pena dar uma olhada se é nessa porta mesmo que seu servidor está subindo =)

Inclusive, no seu ip também faltou a porta. Ele está rodando na porta 80 mesmo?

Abraço