MVP Conf 2019
Refatorando para
Testes de Unidade
André
Baltieri
CEO do balta.io
Objetivos:
- Pegar um código “ruim” que funciona
- Refatorar
- Aplicar testes de unidade
MVP Conf 2019
Refatorando para
Testes de Unidade
mas antes de
começar...
Siga @balta.io
nas Redes Sociais
Receba nossas novidades
Newsletter
https://go.balta.io/cadastro
Cursos alinhados ao mercado
Cancele quando quiser
Seja nosso
aluno!
Confira os cursos: http://balta.io/cursos
Quem nunca ouviu
Estas frases...
- Testar toma muito tempo
- Testar é difícil
- Eu testo em produção
- Meu código não é testável
- Quanto custa um bug?
- Só usa testes com DDD
- Sem TDD não tem que testar
Conselhos que vão salvar
Sua vida...
- Reforce sempre o básico
- OOP é o caminho
Cenário
Vendas
Resumo
- Cenário de “Microsserviços”
- Um serviço de vendas
- Tem que:
- Obter os produtos
- Calcular o frete
- Verificar cupom de desconto
- Calcular total do pedido
- Gerar pedido
- Serviço mais importante do produto todo
Cenário
Vendas
Cenário
Vendas
Cenário
Vendas
Cenário
Vendas
Resumo
- O código funciona
- Tem vários anti-patterns
- Difícil visibilidade
- Baixo reuso
- Alto acoplamento
- Difícil manutenção
- Não tem testes
#1
Repository Pattern
#1
Repository Pattern
Resumo
- Provê uma abstração do acesso à dados
- Provê desacoplamento
- Pode ser mockado para testes
#1
Repository Pattern
Dependa e Abstração e não de implementação
#1
Repository Pattern
#testes
Testando os Repositórios
#1
Testando os Repositórios
Sobre Testes de Unidade
- Não podemos depender de banco
- Queries “na mão” não são testáveis
#1
Testando os Repositórios
#1
Testando os Repositórios
#2
Serviços Externos
#2
Serviços Externos
Resumo
- Não tem como serem testados
- Tem que haver uma contingência (Polly)
- Ficam nos repositórios para serem mockados
#2
Serviços Externos
Resumo
- Não tem como serem testados
- Tem que haver uma contingência (Polly)
- Ficam nos repositórios para serem mockados
#3
Regras de Negócio
#3
Regras de Negócio
Resumo
- Ficam na entidade (Domínio)
- Ou em um serviço (Domain Service) quando são compartilhadas
- Devem seguir o OCP
- Devem ser mais pura possível
- Devem ser fáceis de testar
- Evite muitos IFs nos Controllers
- Design By Contracts
- Flunt
#3
Regras de Negócio
#3
Regras de Negócio
Resumo
- Ficam na entidade (Domínio)
- Ou em um serviço (Domain Service) quando são compartilhadas
- Devem seguir o OCP
- Devem ser mais pura possível (POCO)
- Devem ser fáceis de testar
- Evite muitos IFs nos Controllers
- Design By Contracts
- Flunt
#3
Regras de Negócio
#testes
Regras de Negócio
#3
Regras de Negócio
#4
Refatorando o Pedido
#3
Regras de Negócio
#3
Regras de Negócio
#3
Regras de Negócio
#3
Regras de Negócio
#testes
Pedido
#3
Regras de Negócio
#3
Regras de Negócio
E ainda
tem mais...
E ainda
Tem muito mais...
Você também pode testar...
- Fluxos (Handlers com CQRS)
- Commands
- Fail Fast Validations
Valorize o BR
Utilize o Flunt!
https://github.com/andrebaltieri/flunt
Dúvidas?
hello@balta.io
Siga @balta.io
nas Redes Sociais
Material Selecionado
Cancele quando quiser
Cursos alinhados ao
mercado
Conteúdo novo TODO DIA!
https://balta.io
SEGUNDA
Vlog
TERÇA
Tutorial/Novas Aulas
QUARTA
Tutorial/Live Coding
QUINTA
Novas Aulas
SEXTA
Carreira Dev
SÁBADO
BaltaNews
Receba esta palestra
https://mvpconf.balta.i
o
hello@balta.io
https://balta.io/

Refatorando para Testes de Unidade

Notas do Editor

  • #2 Abertura // instrudução
  • #3 Tela de apresentação do curso
  • #5 Conheça o instrutor