Como falsificar uma API de terceiros

Sep 03 2020

Nosso aplicativo faz chamadas para uma API de terceiros para completar algumas tarefas.

Este endpoint tem um problema no ambiente de teste, e a gerência nos pediu para simular este ambiente para que quando o aplicativo ou qualquer pessoa tentar chamar www.test.com da máquina de teste, ele obtém informações de um servidor simulado em vez do www real .test.com .

Eu tentei descobrir opções diferentes, mas tudo zomba se criarmos um objeto simulado e, em seguida, chamarmos o objeto simulado.

Estou tentando descobrir uma maneira de sempre que alguém ligar para www.test.com , exibir conteúdo do localhost.

Não quero editar o arquivo host. Existe alguma outra maneira?

Atualizar:

Tornou o aplicativo configurável, para que possamos especificar qual endpoint o aplicativo deve chamar.

Eu usei o Mockserver no carteiro para simular isso. Mas postmand não suporta parâmetro de consulta

então para v1 / api? q = 1 e v1 / api? q = 2 ele retorna a mesma resposta

Alguém poderia ajudar a criar um servidor mocks que dê uma resposta diferente para diferentes parâmetros de consulta

Respostas

1 NielsvanReijmersdal Sep 04 2020 at 18:11

Temos uma boa experiência com o json-server. Achamos que é muito flexível.

Obtenha uma API REST totalmente falsa com codificação zero em menos de 30 segundos (sério)

Criado com <3 para desenvolvedores de front-end que precisam de um back-end rápido para prototipagem e simulação.

https://github.com/typicode/json-server

Ele pode servir a partir de arquivos json estáticos, onde cada ID retorna um valor diferente. Ou você pode usar JavaScript para gerá-los. Você pode alterar os dados com base no id, fornecer dados aleatórios, girar conjuntos de dados, etc ...

Eles também têm uma versão hospedada para você, caso deseje testar na Internet. Pequenos conjuntos de dados são gratuitos:https://my-json-server.typicode.com/

1 Moro Sep 05 2020 at 14:53

De acordo com os documentos do Postman :

Se nenhuma correspondência exata for encontrada, o Postman retornará a melhor resposta correspondente com base em seu algoritmo.

Eu testei o servidor simulado e ele funciona com parâmetros de consulta, no entanto, o algoritmo aponta para um valor padrão quando você não simula o parâmetro. No meu caso:

?id=1aponta para 200com okpágina
?id=2aponta para página 404com e assim por diante não é implementado e o servidor simulado retorna a página com .bad request
?id=3200ok

1 dzieciou Sep 05 2020 at 15:16

Se você aceita mocking com outros pacotes além do Postman, sugiro usar MockServer ou WireMock , ambos com suporte para descrever regras de correspondência em Java e JSON.

Por exemplo, com o WireMock você pode corresponder a solicitação HTTP por URL e string de consulta da seguinte maneira :

Correspondência de Regex no caminho e na consulta

Java:

urlMatching("/your/([a-z]*)\\?and=query")

JSON:

{
  "request": {
    "urlPattern": "/your/([a-z]*)\\?and=query"
    ...
  },
  ...
}
1 QuantumNinja Sep 10 2020 at 07:24

Você pode configurar parâmetros de env e usá-los para controlar com quais apis seu aplicativo se comunica? Você pode usar isso para definir facilmente endereços de API de desenvolvimento, teste e produção.