quinta-feira, 25 de fevereiro de 2021

Unit Test com Node, Typescript e Jest

Vamos aproveitar o post anterior (AWS Lambda, Node e Typescript), e vamos incluir no projeto o "jest", com ele conseguimos criar unit test.

Passos:

1) Inserir dependências

npm install --save-dev babel-jest @babel/core @babel/preset-env @babel/preset-typescript @types/jest babel-jest jest


2)  No elemento "scripts" do arquivo "package.json" altere para "jest" o valor do elemento "test"

3) Vamos incluir o type "jest" no arquivo "tsconfig.json"

4) Para a compilação do projeto, vamos deixar de fora o diretório que irá conter os arquivos de testes, para isso, vamos colocar o elemento "exclude" no arquivo "tsconfig.json"

5) Agora vamos criar o arquivo de configuração do babel, na raiz do projeto crie o arquivo "babel.config.js" com as seguintes configs:

6) Crie o diretório "test" e o arquivo "hello.world.test.ts"

7) Agora execute o comando

npm run test


Site do Jest - link 

O projeto deste post está no meu github link.

sexta-feira, 19 de fevereiro de 2021

AWS Lambda, Node e Typescript

Neste post vou mostrar como criar um AWS Lambda utilizando Node e Typescript. 

O projeto será organizado para o exemplo deste post e para entendimento que o mesmo projeto possa ser reaproveitado (módulos) em outros lambdas, por exemplo, um projeto que componha todas as operações/funções (lambda) de uma API.

Passos: 

1) Instalação npm:

sudo apt-get install npm

2) Instalação Node:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

3) Instalação typescript:

sudo npm install -g typescript

4) - Criação do projeto:

mkdir LambdaNodeTypescript
cd LambdaNodeTypescript
tsc --init
npm init

5) Com o projeto criado, abra o mesmo com alguma ferramenta de desenvolvimento de sua preferencia, neste exemplo será utilizado o Visual Studio Code. Execute:

code .

6) Vamos continuar as configurações agora usando o terminal do Visual Studio Code. Vamos acrescentar as seguintes dependências do projeto para desenvolvimento com o Typescript. execute os seguintes comandos:

npm install @types/node --save-dev
npm install aws-sdk --save-dev
npm install @types/aws-lambda --save-dev


7) Depois vamos configurar a parte de build, agora vamos criar as classes que irão compor nosso projeto. Vamos criar um modulo de controller, para isso crie um dir "controller" e o seguinte arquivo "hello.world.controller.ts". Nesta classe que iremos deixar nossas regra de negocio.


8) Vamos agora criar o handler, crie um dir com o nome "handler", e crie o arquivo "hello.world.handler.ts".


9) Vamos criar o index, para podermos declarar o método de execução do lambda, que no caso do exemplo é o "execute".

10) Agora vamos configurar o build e test do projeto, para o build, vamos alterar o arquivo "tsconfig.json" da seguinte maneira:


Agora vamos alterar o arquivo "package.json":


11) Execute o comando para gerar o arquivo zip.

npm run all

12) Vamos criar um AWS Lambda, acesse a console, selecione "Lambda" e depois "Create function":

 

13) Em "Function Name" preencha com "LambdaNodeTypescript", selecione a ultima runtime do node disponível e selecione a role para execução e click em "Create Function"


14) Com a função criada, vamos fazer o upload do zip do projeto, em  "Action" selecione "Upload a .zip file"


15) Click em "Upload", selecione o arquivo zip do projeto e click em "Save"


16) Vamos apontar agora para o método "execute", vá em "Runtime settings" e click em "Edit" 

17) Em "Handler" altera para "index.execute" e click em "Save"

18) Vamos criar um evento de teste para o nosso Lambda, selecione "Configure test events"

19) Em "Event name" preencha com "test1" e passe um json em branco e click em "Create"

20) Vamos testar, certifique-se que o evento de teste criado anteriormente está selecionado e click em "Test".


O projeto deste post está no meu github link.