AAA (Arrange-Act-Assert Padrão de testes
Me tornei um programador que gosta de estudar testes e é fascinado por desenvolvimento com TDD, atualmente estou estudando Go & React, React eu já tenho experiência, mas não conhecia algumas técnicas e o Go, vamos desenvolver um projeto e resolvi estudar a fundo a linguagem e os testes.
Na programação, criamos padrões, acrônimos e mais padrões, nos testes, não seria diferente, não é? Vamos lá.
AAA" (Arrange-Act-Assert) é um padrão de escrita de testes unitários que define uma estrutura clara e organizada para cada caso de teste. Ele é comumente usado em ambientes de desenvolvimento de software, especialmente em frameworks de teste como o Jest, Mocha, Jasmine, NUnit, entre outros.
A ideia principal por trás do padrão AAA é dividir o teste em três fases distintas:
- Arrange (Preparação): Nesta fase, você configura o ambiente de teste, preparando todas as condições necessárias para executar o teste. Isso pode incluir a criação de objetos, a definição de variáveis, a configuração de estados iniciais e a preparação do ambiente de execução do teste.
- Act (Ação): Esta fase envolve a execução da ação ou comportamento que está sendo testado. É onde você chama o método ou função que deseja testar, com os argumentos apropriados e nas condições preparadas na fase de preparação.
- Assert (Verificação): Nesta fase, você verifica se o resultado da ação corresponde ao comportamento esperado. Você verifica se o resultado retornado é o que você espera, se o estado dos objetos foi alterado corretamente, se as exceções foram lançadas quando esperado, etc.
A estrutura AAA ajuda a tornar os testes mais legíveis, compreensíveis e fáceis de manter, pois separa claramente a preparação, a execução e a verificação em seções distintas.
Aqui está um exemplo simples de como um teste pode ser organizado usando o padrão AAA em JavaScript:
// Teste de exemplo usando AAA
// Arrange (Preparação)
const a = 5;
const b = 3;
// Act (Ação)
const result = a + b;
// Assert (Verificação)
expect(result).toBe(8);
Neste exemplo:
- Na fase de preparação (Arrange), definimos os valores das variáveis
a
eb
. - Na fase de ação (Act), executamos a operação de soma
a + b
. - Na fase de verificação (Assert), verificamos se o resultado é igual a 8, como esperado.
Essa abordagem ajuda a garantir que cada teste tenha uma estrutura clara e consistente, facilitando a compreensão do que está sendo testado e dos resultados esperados.