12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * MSW Mock 服务配置
- */
- import { setupWorker } from 'msw/browser';
- import { handlers } from './handlers/index.js';
- // 创建 MSW Worker
- export const worker = setupWorker(...handlers);
- /**
- * 启动 Mock 服务
- * @param {Object} options 配置选项
- * @returns {Promise}
- */
- export const startMocking = async (options = {}) => {
- const defaultOptions = {
- onUnhandledRequest: 'bypass', // 未处理的请求直接通过
- quiet: false, // 是否静默模式
- ...options,
- };
- // 只在开发环境启动
- if (process.env.NODE_ENV === 'development') {
- try {
- await worker.start(defaultOptions);
- if (!defaultOptions.quiet) {
- console.log('🚀 [MSW] Mock 服务已启动');
- console.log('📋 [MSW] 已注册的接口数量:', handlers.length);
- }
- return true;
- } catch (error) {
- console.error('❌ [MSW] Mock 服务启动失败:', error);
- return false;
- }
- }
- return false;
- };
- /**
- * 停止 Mock 服务
- */
- export const stopMocking = () => {
- worker.stop();
- console.log('🛑 [MSW] Mock 服务已停止');
- };
- /**
- * 重置 Mock 服务
- */
- export const resetMocking = () => {
- worker.resetHandlers();
- console.log('🔄 [MSW] Mock 服务已重置');
- };
- /**
- * 动态添加处理器
- * @param {Array} newHandlers 新的处理器
- */
- export const addHandlers = (newHandlers) => {
- worker.use(...newHandlers);
- console.log(`➕ [MSW] 已添加 ${newHandlers.length} 个新处理器`);
- };
- // 开发环境下挂载到 window 对象,方便调试
- if (process.env.NODE_ENV === 'development') {
- window.mockService = {
- start: startMocking,
- stop: stopMocking,
- reset: resetMocking,
- addHandlers,
- worker,
- };
- }
|