| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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 拦截器已启用');
- }
|