@rflcstnunes/axios-mock-helper v1.17.0
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 testesRequisiçã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 tipoAxiosMockHelperOptionsque aceita as seguintes propriedades:isTesting(boolean): Setrue, 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 arquivomockResponses.tspadrã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.