1.17.0 • Published 1 year ago

@rflcstnunes/axios-mock-helper v1.17.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Axios Mock Helper

Este helper foi projeto para fornecer uma interface simples para criar instâncias do Axios com suporte a respostas simuladas (mocks) durante o desenvolvimento ou testes. Ele oferece a capacidade de configurar respostas simuladas personalizadas para diferentes chamadas HTTP e, ao mesmo tempo, manter a funcionalidade padrão do Axios para chamadas reais quando necessário.

Fluxo de Uso

Inicialização

Chame a função initializeAxios ao iniciar sua aplicação, configurando se o ambiente é de teste ou produção.

import { initializeAxios } from "@rflcstnunes/axios-mock-helper";

initializeAxios({ isTesting: true }); // Ativa o modo mock para testes

Requisição Simulada:

Utilize o método getAxiosInstance para obter a instância do Axios configurada e fazer requisições, incluindo o cabeçalho mock-key para definir a resposta simulada.

Remover o Mock para Produção

Simplesmente desabilite o modo de teste (isTesting: false) e as requisições passarão a ser reais, sem retornar mocks.

Estrutura do Helper

initializeAxios(options: AxiosMockHelperOptions): void Inicializa a instância do Axios com base nas opções fornecidas. Essa função deve ser chamada antes de utilizar o helper para garantir que o Axios está configurado corretamente.

Parâmetros:

  • options (opcional): Um objeto do tipo AxiosMockHelperOptions que aceita as seguintes propriedades:
    • isTesting (boolean): Se true, ativa o modo de simulação (mock) para interceptar as requisições e retornar respostas simuladas.
    • mockResponses (AxiosMockResponse): Um objeto contendo as definições das respostas simuladas. Se não fornecido, o helper utilizará o arquivo mockResponses.ts padrão.
    • globalMockDelay (number): Um valor (em milissegundos) para definir um atraso global em todas as respostas simuladas.

getAxiosInstance(): AxiosInstance Retorna a instância do Axios criada com base na configuração. Se a função initializeAxios ainda não tiver sido chamada, lança um erro.

Exemplo de Uso:

import { getAxiosInstance } from "@rflcstnunes/axios-mock-helper";

const axiosInstance = getAxiosInstance();

axiosInstance
  .post("/oauth2/token", requestData, {
    headers: {
      "mock-key": "authorization_token", // Define a resposta simulada com base no 'mock-key'
    },
  })
  .then((response) => {
    console.log("Mocked Response Data:", response.data);
  })
  .catch((error) => {
    console.error("Error:", error);
  });

Arquivo de Configuração de Mock (mockResponses.ts)

O arquivo mockResponses.ts define as respostas simuladas para diferentes endpoints. Ele segue o formato de um objeto MockResponses, onde cada chave do objeto representa um mock único identificado por uma string (chave do mock). Estrutura do Mock:

{
  url: string,  // A URL que deve ser interceptada
  method: string, // O método HTTP esperado (GET, POST, etc.)
  delay?: number, // Atraso opcional antes de retornar a resposta
  response: {
    data: any, // Os dados simulados que devem ser retornados
    status: number, // O status HTTP da resposta (ex: 200)
    statusText: string, // O texto de status (ex: "OK")
    headers?: Record<string, string>, // Cabeçalhos opcionais da resposta
  },
}

Arquivo de Configuração Axios (axiosConfig.ts)

O arquivo axiosConfig.ts define as funções e tipos relacionados à configuração do Axios com suporte a respostas simuladas.

Funções e Tipos Importantes:

  • createAxiosInstance(options: AxiosMockHelperOptions): AxiosInstance: Cria uma instância do Axios com base nas opções fornecidas. Se o modo de simulação (isTesting) estiver ativado, o Axios intercepta as requisições e retorna as respostas mock definidas.
  • MockResponses: Interface que define as respostas simuladas, organizadas por chave de mock.
  • MockResponse: Interface que define a estrutura da resposta mock (dados, status, headers, etc.).

Personalização dos Mocks

As respostas simuladas podem ser personalizadas sendo passadas para a função initializeAxios.

Exemplo de Uso:

const mockResponses = {
  get_user_info: {
    url: "/api/user",
    method: "GET",
    response: {
      data: { name: "Mocked User", id: 123 },
      status: 200,
      statusText: "OK",
    },
  },
};

Atributo mock-key

Para que uma requisição utilize uma resposta simulada, é necessário incluir o cabeçalho mock-key com o valor da chave do mock que você deseja utilizar.

Exemplo de Requisição Simulada:

axiosInstance
  .get("/api/user", {
    headers: {
      "mock-key": "get_user_info", // Requisição será interceptada e retornará a resposta mock definida
    },
  })
  .then((response) => {
    console.log("Mocked User Info:", response.data);
  });

Remoção de Mocks para Produção

O helper é projetado para que os mocks sejam ignorados quando isTesting for false. Assim, as requisições serão enviadas normalmente sem qualquer interceptação quando o ambiente de teste não estiver ativo.

1.17.0

1 year ago

1.16.0

1 year ago

1.15.0

1 year ago

1.14.0

1 year ago

1.13.0

1 year ago

1.12.0

1 year ago

1.11.0

1 year ago

1.10.0

1 year ago

1.9.0

1 year ago

1.8.0

1 year ago

1.7.0

1 year ago

1.6.0

1 year ago

1.5.0

1 year ago

1.4.0

1 year ago

1.3.0

1 year ago

1.2.0

1 year ago

1.1.0

1 year ago

1.0.0

1 year ago