import axios from 'axios'; // 简单的 Mock 拦截器 const mockData = { '/api/user': { id: 1, name: '测试用户', email: 'test@example.com' }, '/api/list': [{ id: 1, title: '项目1' }, { id: 2, title: '项目2' }], }; // 模拟延迟 const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); // 设置 Mock 拦截器 export function setupMock() { axios.interceptors.request.use(async (config) => { const url = config.baseURL + config.url; // 模拟 404 错误 if (config.url?.includes('/not-found')) { await delay(300); const error = new Error('Request failed with status code 404'); error.response = { status: 404, data: { message: 'Not Found' } }; error.config = config; return Promise.reject(error); } // 模拟 500 服务器错误 if (config.url?.includes('/server-error')) { await delay(300); const error = new Error('Request failed with status code 500'); error.response = { status: 500, data: { message: 'Internal Server Error' } }; error.config = config; return Promise.reject(error); } // 模拟超时错误 if (config.url?.includes('/timeout')) { await delay(6000); // 超过 timeout 设置 return config; } // 模拟网络错误 if (config.url?.includes('/network-error')) { await delay(300); const error = new Error('Network Error'); error.config = config; return Promise.reject(error); } // 正常 Mock 响应 const mockKey = Object.keys(mockData).find((key) => url.includes(key)); if (mockKey) { await delay(300); config.adapter = () => { return Promise.resolve({ data: mockData[mockKey], status: 200, statusText: 'OK', headers: {}, config, }); }; } return config; }); console.log('[Mock] Mock 拦截器已启用'); }