Exemplo da criação de um Pact entre:
- 1 consumidor (Consumer)
- 1 provedor (Provider)
- Veja este mesmo cenário feito em Java.
- Node + npm
- Express
- Typescript
- Jest
- Pact
- Pact Broker
Este exemplo aborda um cenário comum no setor bancário. Nosso objetivo é obter o dado de saldo de determinado cliente. Para isto, vamos considerar que este dado será recuperado da seguinte forma:
1 - Com o identificador do cliente, solicitamos ao serviço de dominio do cliente (client-api) o valor do saldo em conta.
2 - Por sua vez, o client-api pergunta ao serviço de domínio da conta (account-api) qual o saldo contido na conta atrelada aquele cliente.
3 - Tendo a informação do saldo em conta, o client-api retorna a informação a quem a solicitou.
A imagem abaixo representa esse fluxo.
De forma resumida, temos os seguintes serviços:
- account-api: mantém e gerencia informações relacionadas a contas bancárias.
- client-api: mantém e gerencia informações sobre clientes/correntistas.
-
Garanta que você tenha uma instância do Pact Broker rodando localmente. Vide seção configuração do Pact Broker caso tenha dúvida.
-
Com o Broker funcionando, podemos iniciar os testes. Primeiro, precisamos instalar as dependencias da API. Para isto, va até o diretório
client-api
e execute o seguinte comando:
npm install
Em seguida, precisamos gerar o contrato do PACT para a nossa API consumidora e o publicamos no Broker.
No mesmo diretório, execute os seguintes comandos:
npm run test
npm run pact:publish
Acesse o Pact Broker (http://localhost:9292
) em seu navegador. Você deverá ver o contrato publicado.
Caso tenha interesse, o contrato gerado pode ser conferido no diretório client-api/pacts
.
- Para validar o contrato gerado, vamos até o diretório da nossa API provedora (provider)
account-api
. Novamente, precisamos instalar as dependencias da API. Para isto, execute o seguinte comando:
npm install
Para testarmos o contrato com a API consumidora, precisamos apenas rodar o teste da API. Para isto, execute:
npm run test
Este teste irá verificar no Broker os contratos disponiveis para validação, baixá-los e testá-los de acordo com a API. Ao final, podemos conferir o resultado do teste que é publicado no Broker.