axios-mock-adapter Если я имитирую запросы, то работают только те запросы, которые я имитирую

Я пытаюсь смоделировать API, который еще не реализован на сервере. Но если я высмеиваю запросы, то работают только те запросы, которые я высмеиваю. Если я добавлю mock.restore(); после mock.onGet тогда реальный API работает нормально, но тогда мне не нужен и фиктивный API.

import * as axios from 'axios';
import MockAdapter from 'axios-mock-adapter';

const mainConfig = require('../../../config/main.js');

const request = (axios as any).create({
  baseURL: mainConfig.apiBaseUrl,
  headers: {
    'Content-Type': 'application/json',
  },
});

const mock = new MockAdapter(request);

mock.onGet('basket').reply(200, {...});

export default request;

2 ответа

Решение

Как объясняется в документации библиотеки, немонетированные запросы должны быть явно разрешены:

// Mock specific requests, but let unmatched ones through
mock
  .onGet('/foo').reply(200)
  .onPut('/bar', { xyz: 'abc' }).reply(204)
  .onAny().passThrough();

Добавляя к ответу @Estus, мы также можем перенаправлять другие запросы на сервер, как показано ниже.

      // Mock all requests to /foo with HTTP 200, 
// but forward any others requests to server
var mock = new MockAdapter(axiosInstance, { onNoMatch: "passthrough" });

mock.onAny("/foo").reply(200);
Другие вопросы по тегам