Simulações portable
Uma simulação portable é a forma empacotada de um mock: a simulação inteira, specs, endpoints estáticos, configuração e contextos, como arquivos comuns. Portable quer dizer que o pacote viaja: os mesmos arquivos servem no seu notebook, no Docker, dentro do CI e hospedados na plataforma, e nada impede que eles rodem em todos esses lugares ao mesmo tempo.
Um comando
Com a CLI instalada, qualquer spec OpenAPI vira um mock no ar:
mockzilla petstore.ymlO servidor sobe na porta 2200 com o explorador de API na raiz, a mesma interface navegável que uma simulação hospedada serve.
Ele aceita mais que um arquivo:
mockzilla https://petstore3.swagger.io/api/v3/openapi.json # um spec por URL
mockzilla ./ # uma pasta de specs ou de serviços
mockzilla petstore.mockz # uma simulação empacotadaVeja Instalar a CLI para colocar o mockzilla na sua máquina, e Rodar uma simulação localmente para o caminho do .mockz: toda simulação com deploy feito entrega o pacote dela ali, então a hospedada e a local continuam sendo o mesmo mock.
A pasta é a simulação
Apontar o motor para um diretório lê uma de três formas, da descartável ao projeto completo:
- Um monte de specs: jogue arquivos de spec numa pasta e cada um vira um serviço com o nome do arquivo. Não precisa de mais nada.
- Uma pasta de serviço: um spec mais
config.ymlopcional (latência, erros, upstream, montagem),context.yml(valores para os dados gerados) e arquivos de endpoint estático. - Uma árvore
services/: uma pasta por serviço, todas com a mesma estrutura, que é o formato que a GitHub Action publica e que o template traz.
Os endpoints estáticos seguem a convenção do app: os segmentos do caminho como pastas, o método como última pasta, index.<ext> como corpo.
Veja Endpoints e respostas estáticas.
Edite e veja mudar
O servidor fica de olho nos seus arquivos. Salve um spec, uma configuração, um contexto ou um endpoint estático e o serviço afetado é trocado ao vivo, sem reiniciar: edite o YAML do lado esquerdo da tela, dê curl no comportamento novo do lado direito.
As mesmas configurações, como arquivos
Tudo que uma simulação hospedada configura no app, uma portable configura no config.yml de cada serviço: injeção de latência e de erro, um upstream com queda para o mock, cache, histórico, replay. As opções e o que elas significam batem uma a uma com a página Configurações do serviço.
A referência completa de flags e configuração fica junto do motor: documentação do modo portable.
Um pacote, vários lugares
A graça do pacote é rodar ele em todo lugar ao mesmo tempo, a partir de um conjunto só de arquivos:
- Na sua máquina enquanto você desenvolve, com recarga automática junto.
- No CI: um passo do pipeline sobe a própria cópia, os testes rodam contra ela, e ela morre junto com o job.
- Hospedado: a mesma pasta vai pelo GitHub Action, então a URL compartilhada do time serve exatamente o que o repo tem.
- Offline ou em rede isolada quando precisar: com o binário e os arquivos no lugar, não falta mais nada.
Como toda cópia lê os mesmos arquivos, o repositório é a única fonte da verdade. Cada cópia pega um merge no ritmo dela: a URL hospedada no push seguinte, um pipeline na próxima execução, um notebook no próximo pull.