Mock axios-adapter

460 阅读1分钟

九色鹿中Mock数据

利用axios-mock-adapter

用法

import MockAdapter from "axios-mock-adapter";
const mock = new MockAdapter(instance);

// 和生成 functionId:Res 对象
// 后续根据functionId可以返回mockRes
const apiMockRes = Object.values(API).reduce(
  (acc, cur) =>
    Object.assign(acc, {
      [cur.alias]: cur.defaultRes
    }),
  {}
);

mock.onAny().reply(function Res(config) {
  const functionId =
    getUrlParamBy("functionId", config.url) || config.params.functionId;
  const res = apiMockRes[functionId];
  return [200, res];
});

mock数据

包含网关api,res,及method

export const GET_LABEL_LIST = {
  alias: "ddDataCenterLabelList",
  defaultRes: {
    data: {
      data: labelList,
      page: 1,
      size: 100,
      total: 100
    },
    resultCode: "00",
    resultMsg: "请求成功"
  }
};

调用

import { GET_ALL_LABEL, GET_LABEL_LIST } from "../../api/apiGatewayMapList";

invokeApi(GET_ALL_LABEL).then((res) => {
    if (!res.data || res.data.length < 1) return;
    const list = res.data.map((item) => {
      return {
        label: item.name,
        value: item.id
      };
});

invoke函数:


const invokeApi = (api, params) => {
  const { alias, method = "get" } = api;
  return Axios[method](alias, params);
};