AAA (Arrange-Act-Assert Padrão de testes

AAA (Arrange-Act-Assert Padrão de testes
Photo by Scott Graham / Unsplash

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:

  1. 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.
  2. 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.
  3. 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 e b.
  • 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.

Read more