Escrevendo seu primeiro teste no Laravel 5.4

Victor Hugo Rocha
Jul 14, 2017 · 3 min read

Olá, DevZ.

Eu já abordei o tema Testes quando escrevi um artigo sobre TDD (Test Driven Development). Se você tem zero conhecimento sobre esse tema, lá é um bom lugar para começar. Nesse artigo eu vou te mostrar na prática como escrever seu primeiro teste no Laravel.

Todo código que não possui cobertura de testes é um código legado.

Essa é, na minha opinião, a melhor definição do que é código legado e por tabela a melhor explicação do porquê você deveria estar escrevendo testes para a sua aplicação.


Mãos na massa. A essa altura você já deve estar acostumado com a interface de linha de comando do Laravel para criar suas migrations e seeds, agora faremos um comando parecido para criamos nosso arquivo de teste.

php artisan make:test ViewTest

Como você pode perceber, nosso exemplo se trata de um teste das views da minha aplicação. O nome é um ponto importante quando falamos sobre testes no Laravel, para que o phpunit encontre nosso arquivo de teste e nossos métodos, eles devem seguir o padrão nomeTest para o arquivo e testNomeDoMétodo para a função dentro do nosso arquivo.


O Laravel providência vários métodos de asserção customizados para você utilizar nos seus testes com o PHPUnit, você pode ver todos eles na documentação. No exemplo acima usamos dois deles: assertStatus e assertViewHas.

Dentro da função que testa a view Point nós fazemos uma requisição get para as rotas onde são criadas os pontos e onde eles são listados, após isso nós dizemos que esperamos que seja recebido um status 200. O que isso significa? Existe uma lista de códigos de resposta HTTP. 200 é a resposta padrão para uma requisição de sucesso.

Outros erros conhecidos são 400 ou 401 para requisições inválidas ou não autorizada. O que estamos fazendo no nosso teste é dizer que esperamos que ao acessar essa rota, ela funcione. Por que isso é útil? Com esse teste, se alguma das minhas controllers não mandar uma variável para a minha view, eu consigo pegar esse erro ao rodar nossos testes e ir direto na view onde estar o problema.

Na linha logo abaixo nós somos mais específicos e com o assertViewHas nós dizemos que aquela rota deve receber aquela variável, ou seja, a variável fornecedor deve estar disponível naquela view. Caso isso não ocorra, o teste irá falhar e nós podemos ir diretamente no foco do nosso problema, tornando muito mais fácil debuggar qualquer erro na sua aplicação.

Esse é só um exemplo simples de como escrever teste pode mudar a sua aplicação e torná-la muito mais sustentável. Para fechar esse artigo nós precisamos rodar os testes e fazemos isso com o seguinte comando.

vendor/bin/phpunit

Após alguns segundos o PHPUnit vai te devolver o resultado dos seus testes apontando quantos testes rodaram, quantas falharam e quantos acertos você teve! Se você gosta de manter o terminal limpo e com pequenos comandos você pode criar um alias para sua ferramenta PHP de testes da seguinte maneira.

sudo nano .bash_profile
alias phpunit=‘$(pwd)/vendor/bin/phpunit’
source ~/.bash_profile

Nós editamos as nossas configurações do Bash utilizando sudo para salvarmos as alterações, dizemos que ao rodar o comando phpunit estamos executando a partir do caminho em que estamos (pwd) aquele comando anterior. Depois de salvarmos o arquivo .bash_profile carregamos as novas configurações com o comando source.


Se você chegou até aqui não esqueça de deixar o seu ❤ e/ou um comentário. Se você tem interesse por Laravel ou gostou do meu texto você pode ler algum dos meus outros artigos, recomendo:

  1. PHP — Implementando adminLTE no Laravel 5.4
  2. PHP — Criando um CRUD com Laravel 5.4
  3. PHP — Relacionando Models e Tabelas no Laravel 5.4
  4. Docker — Dockerhub, pull e push nas suas imagens

See you, Space Cowboy!

Training Center

Conectamos pessoas que querem aprender algo relacionado a desenvolvimento de software com gente que pode guiá-las.

Victor Hugo Rocha

Written by

Desenvolvedor Web e escrevo umas paradas.

Training Center

Conectamos pessoas que querem aprender algo relacionado a desenvolvimento de software com gente que pode guiá-las.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade