Please enable JavaScript.
Coggle requires JavaScript to display documents.
C#: aprenda a criar testes limpos com boas práticas - Coggle Diagram
C#: aprenda a criar testes limpos com boas práticas
Identificando dependências entre classes
HttpClientPet
Retirada a responsabilidade do List e Import de cria-la
Interface
IHttpClientFactory
Para evitarmos problemas como o de esgotamento de soquetes
Bliblioteca
Moq
Instalaçao via
Nuget
Instalação via CLI
dotnet add package Moq
Estando o prompt na pasta do projeto
Testar com mock significa "simular" como um dublê de filme a resposta de um servidor, quando na verdade ele não existe
Para testar faço uma classe de teste dentro de um projeto de teste
Arrange
Criação do comando. Declaração dos objetos.
Act
Executa as tarefas do programa. O que faz.
Assert
Confirmar se a ação teve o resultado desejado
O mock deve responder inclusive com um json instanciado
Nesta classe teste devem ser simuladas também as exceções. Por exemplo a API fora do ar. O programa deve retornar o timeout.
Problemas ao testar comandos
Comandos é entendiddo como o núcleo da aplicação
Import
Importação de um arquivo
Quando API no ar deve retornar uma lista
O nome do método deve dar a entender o que ele testa
F.I.R.S.T.
, proposto por Robert C. Martin
livro Código Limpo
F (Fast):
Os testes devem ser rápidos tanto na escrita quanto em sua execução, o ideal é que consigamos executá-los frequentemente durante o desenvolvimento da aplicação. Isso possibilita um feedback rápido sobre a qualidade do código e ajuda a mitigar problemas de forma precoce.
I (Isolated/Independent):
No princípio I o objetivo é fazer que os testes sejam independentes uns dos outros e não devem depender da ordem de execução. Isso garante que cada teste valide uma única unidade de código, isolando-a de outras dependências.
R (Repeatable):
A possibilidade de conseguir repetir os testes em qualquer ambiente ou máquina, sem depender de fatores externos ou estado compartilhado. Isso evita inconsistências nos resultados dos testes.
S (Self-validating):
Os testes devem ser auto validados, ou seja, devem ser capazes de indicar automaticamente se passaram ou falharam. Isso permite que os desenvolvedores identifiquem rapidamente problemas no código.
T (Timely):
Os testes devem ser escritos em tempo hábil, idealmente antes da implementação do código real, um reforça na aplicação do TDD. Testes oportunos permitem que os desenvolvedores validem seu código à medida que o desenvolvem, facilitando a detecção precoce de erros.
Test Data Builder
Construtor de dados para o teste. Faz 1 usa em vários testes
O nome da classe é bom estar com o Builder no final
É bom colocar isto em uma pasta para organizar
Verify
Verifica expectativas de execução. Implementa S
Biblioteca FluentResult
Padrão
Result
Factory
Príncípio do SRP - Single Responsability Principal