Skip to content

PauloGoncalvesBH/lambda-unit-test

Repository files navigation

Teste unitário em aplicação Serverless

Deixe uma star ⭐ no repositório, isso me incentiva a criar conteúdo de qualidade de software 100% gratuito

Esse repositório exemplifica como realizar teste unitário de aplicação Serverless de forma a validar o seu comportamento a partir dos eventos enviados e garantir que todos os componentes estão bem integrados.


Quando criamos funções lambda precisamos garantir o comportamento de todos os itens de maneira integrada, e isso comumente ocorre subindo a aplicação e realizando os testes manuais, enquanto os métodos que são consumidos pela função lambda são validados unitariamente.

Nesse cenário podemos garantir que o método que identifica se determinado token é valido está comportando da maneira esperada ou não, porém não temos a garantia de que ele está funcionando corretamente de maneira integrada à função lambda, barrando acessos com token inválido e permitindo apenas os acessos com o token esperado.

E é por isso que foi criado esse repositório, com o propósito de demonstrar que é sim possível validar uma função lambda totalmente integrada na camada de testes unitários, identificando comportamentos que normalmente seriam pegos apenas no teste manual. E com esse teste automatizado temos a vantagem de executar o mesmo de forma recorrente em pipeline a cada alteração.

Uma alta cobertura de cenários de funções lambda (e consequentemente alta cobertura de código) é possível.

Como estudar esse exemplo

O exemplo principal é a demonstração da biblioteca lambda-tester, que é utilizado nos arquivos que estão dentro do diretório ./tests/handler.

Recomendo você acessar o diretório ./src, estudar os 2 arquivos presentes no mesmo e em seguida executar a aplicação localmente (ler a seção Aplicação mais abaixo) para entender o comportamento da função lambda criada.

Em seguida execute os testes (ler a seção Testes mais abaixo) e estude os testes implementados.

Dica de amigo

Todos os arquivos em /src e /tests possuem comentários no topo para auxiliar no entendimento do código, mesmo que não possua familiaridade com função lambda não deixe de acessá-los e ler.

Espero que te auxilie :D

Pré-requisitos

É preciso ter os seguintes programas instalados para executar os testes e a aplicação:

Testes

Os testes unitários que utilizam a biblioteca lambda-tester estão no diretório ./tests/handler.

Os testes estão divididos em 3 arquivos e validam os seguintes cenários:

Para rodar os testes execute o seguinte comando no terminal:

docker-compose up test

Ou, caso prefira, acesse a pipeline para ver o resultado dos testes: https://github.com/PauloGoncalvesBH/lambda-unit-test/actions

Resultado do teste

Resultado do teste

A linha 23 é o cenário de execução da função lambda estando autenticado. Essa linha não foi coberta devido de que o propósito desse exemplo era demonstrar o uso da biblioteca lambda-tester.

Aplicação

A aplicação está no diretório ./src, tendo como ponto de entrada o arquivo ./src/index.js, e com a configuração do lambda no arquivo serverless.yml.

Para iniciar a aplicação localmente execute o seguinte comando:

docker-compose up start-serverless

E em seguida, no browser, acesse a URL http://localhost:3000/?token=auth-password.

Para simular o comportamento de Acesso não autorizado acesse o browser com valor diferente em token ou sem o mesmo, como:

Materiais de referência


LICENSE GNU General Public License v3.0

About

Demonstration of unit testing implementation in Serverless application using the 'lambda-tester' library

Topics

Resources

License

Stars

Watchers

Forks