Slides da talk na trilha de golang no TDC 2018.
Testando API's de forma unitária mocando as dependências aborda técnicas de mocks para testes unitários em golang.
TERMINAL
make start
ABAS
APRESENTAÇÃO
REPOSITORIO
GO COVER
TRAVIS
GO REPORT
CODE CLIMATE
Objetivos da talk:
Falar sobre algumas técnicas para facilitar a testabilidade do código de uma api, como:
Uso de interfaces
Injeção de dependências
Mocks
Perguntas:
Quem trabalha com GO
Quem usa testes unitarios
Sobre mim:
+- 2 anos trabalhando com GO.
Atualmente trabalho em softwares relacionados a inteligência de dados em big data.
Trabalhei na chaordic / linx e outras empresas menores em projetos de ecommerce.
Formação técnica em 2007 em processamento de dados.
Promove a coesão, não acopla a um tipo
Específica o contrato a ser cumprido pelo parâmetro injetado.
Não aplicar a tudo. Bala de prata não existe.
Facilita testes, mocar as dependências => Próximo slide
Implementação dos métodos do serviço, usando as dependências exigidas pela interface
MOCKS
Implementa a mesma interface da implementação real
Isola o escopo da camada de teste, remove as dependências de outras camadas.
Controle sobre o comportamento da dependência mockada.
O jack chan é o próprio dublê, igual a testar o código em produção.
Roteiro:
domain/user.go and unit test
domain/user/user.go service, dependency injection, mock, proxy, stub, and unit test
Próximo slide: Meme titanic -> testes unitários não bastam.
Não confie apenas em testes unitários
Testes unitários testam partes, mas não o todo.
Use testes de integração e aceitação
Próximo slide!
Pirâmide de testes
O conceito da pirâmide de testes veio de um livro de agile, aparece em alguns posts do martin fowler.
velocidade de execução x velocidade de implementação
executar quantas vezes, implementar quantas vezes?
Código
storage/user and integration tests, database drop
main and service injections
server/user and http unit tests dependency injection, mock, proxy, stub, and unit test
server/user and http acceptance tests
Mostrar o cover gerado pelo go tool cover
travis
code climate
go report
Agradecimentos
A organização do TDC
Coordenadores da trilha
Quem está assistindo