Posted on: December 09, 2025 02:01 AM
Posted by: Renato
Views: 134
No Laravel (e no PHP em geral), a diferença entre Unit Test e Feature Test é principalmente o nível de escopo que cada teste cobre:
✅ 1. Unit Test (Teste Unitário)
O que é:
-
Testa uma única unidade de código, geralmente um método ou classe isolada.
-
Não depende de banco de dados, HTTP, autenticação, serviços externos etc.
-
Deve ser rápido, isolado e sem side effects.
Exemplos típicos:
-
Testar uma classe helper.
-
Testar uma regra de negócio pura.
-
Testar um service que não acessa DB.
-
Testar métodos de manipulação de arrays, cálculos, validações, etc.
Estrutura no Laravel:
tests/Unit/
Exemplo:
public function test_calcula_total(){$service = new PedidoService();$total = $service->calcularTotal([10, 20, 30]);$this->assertEquals(60, $total);}
➡️ Só testa a lógica interna.
✅ 2. Feature Test (Teste de Funcionalidade)
O que é:
-
Testa fluxos completos da aplicação.
-
Pode testar requisições HTTP, rota + controller + middleware + model + DB.
-
Usa banco via RefreshDatabase ou DatabaseMigrations.
-
É mais lento, mas mais próximo do comportamento real.
Exemplos típicos:
-
Testar um endpoint da API.
-
Validar middleware.
-
Testar autenticação.
-
Testar criação de registro no banco.
-
Testar upload de arquivo.
-
Testar fluxo de login ao pagamento.
Estrutura no Laravel:
tests/Feature/
Exemplo:
public function test_cria_usuario_com_sucesso(){$response = $this->postJson('/api/users', ['name' => 'Renato','email' => '[email protected]','password' => '123456',]);$response->assertStatus(201);$this->assertDatabaseHas('users', ['email' => '[email protected]']);}
➡️ Envolve toda a pilha Laravel.
🆚 Comparativo Rápido
|
Tipo de Teste |
O que cobre |
Velocidade |
Usa DB? |
Ideal pra |
|---|---|---|---|---|
|
Unit Test |
Um método/classe isolado |
⚡ Muito rápido |
❌ Não |
Regras de negócio puras |
|
Feature Test |
Várias camadas juntas |
🐢 Mais lento |
✅ Sim |
Roteamento, controllers, integrações |
🔥 Quando usar qual?
Use Unit Tests quando:
-
Você está testando lógica isolada.
-
Você quer rapidez.
-
Você quer detectar falhas em partes pequenas.
Use Feature Tests quando:
-
Você quer garantir que a aplicação funciona de ponta a ponta.
-
Vai testar APIs, views, middleware.
-
Quer validar integração com banco de dados.
🎯 Resumo simples
Unit Test = testa o cérebro.
Feature Test = testa o corpo inteiro.
Donate to Site
Renato
Developer