O Laravel foi construído pensando nos testes. O suporte para testes com PHPUnit está incluído por padrão e um arquivo phpunit.xml
pré-configurado ao inicializar um projeto Laravel. A estrutura também vem com métodos que auxiliam nos testes.
Por padrão, os testes da aplicação podem ser localizados no diretório tests
, este diretório contém dois subdiretórios: Feature
e Unit
.
Os testes unitários são focados em uma porção pequena e isolada do código, focados em um único método. Testes unitários não precisam rodar em servidor, acessar o banco de dados e/ou outros serviços do Laravel.
Os testes de integração devem testar uma porção maior do código, incluindo as interações entre objetos ou mesmo requisições completas de um endpoint.
Para criar um novo teste, use o comando php artisan make:test
. Por padrão, os arquivos de teste serão criados no diretório tests/Feature
:
php artisan make:test UserTest
Se desejar criar um teste unitário (no diretório tests/Unit
), você deve adicionar o parâmetro --unit
após o comando make:test
:
php artisan make:test UserTest --unit
**<?php
namespace Tests\\Unit;
use PHPUnit\\Framework\\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*/
public function test_basic_test(): void {
$this->assertTrue(true);
}
}**
Após gerar um teste, é necessário definir os métodos do teste. Para criar métodos de teste em Laravel, você precisa adicionar novos métodos dentro da classe de teste gerada. Por exemplo, se você gerou um teste chamado UserTest
, você pode adicionar métodos de teste da seguinte forma:
<?php
namespace Tests\\\\Feature;
use Illuminate\\\\Foundation\\\\Testing\\\\RefreshDatabase;
use Tests\\\\TestCase;
class UserTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function test_example()
{
// Seu código de teste aqui
}
// Adicione outros métodos de teste aqui
}
Dentro de cada método de teste, você pode escrever o código para testar uma funcionalidade específica. Você pode usar os métodos fornecidos pelo Laravel, como assertTrue
, assertFalse
, assertEquals
, etc., para realizar as asserções e verificar se os resultados esperados são alcançados.