Pular para conteúdo

Exercícios: Aula 12 - Testes Automatizados 🧪

🟢 Básico

  1. Comandos: Qual o comando do Artisan para rodar toda a sua suíte de testes e como você pode rodar apenas um arquivo de teste específico?
  2. Conceito: Explique a principal diferença entre um teste de Unidade (Unit) e um teste de Funcionalidade (Feature) no contexto do Laravel.

🟡 Intermediário

  1. Asserções: Crie um teste de Feature que acesse a rota /api/status e verifique: se o status code é 200 e se o JSON retornado contém a chave "status" => "online".
  2. Database Testing: O que o trait RefreshDatabase faz quando adicionado a uma classe de teste? Por que ele é fundamental para testes que interagem com o banco?

🔴 Desafio

5. TDD na Prática: Escreva o plano de teste (em passos) para uma funcionalidade de "Esqueci minha senha". O que você testaria primeiro e quais seriam as asserções finais para garantir que o e-mail foi realmente disparado?

📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: Comandos **Resolução e Implementação:**
// Estrutura de implementação recomendada para Comandos
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes Automatizados**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Conceito **Resposta Comentada:** - **Fundamentação:** No contexto de **Testes Automatizados**, o conceito abordado (Conceito) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Asserções **Resolução e Implementação:**
// Estrutura de implementação recomendada para Asserções
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes Automatizados**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Database Testing **Resolução e Implementação:**
// Estrutura de implementação recomendada para Database Testing
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes Automatizados**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 5: TDD na Prática **Resolução e Implementação:**
// Estrutura de implementação recomendada para TDD na Prática
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes Automatizados**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.