UNPKG

ttk-app-core

Version:

@ttk/recat enterprise develop framework

72 lines (67 loc) 1.86 kB
import Mock from 'mockjs' // import table from './mockFiles/table' // import demoTable from '@/app-demo/table/mock' import mockFetch from './fetch-mockjs' import appMocks from './loader' const mocks = [ // ...table, ...appMocks ] // for front mock // please use it cautiously, it will redefine XMLHttpRequest, // which will cause many of your third-party libraries to be invalidated(like progress event). export function mockXHR() { mockFetch(Mock) // mock patch // https://github.com/nuysoft/Mock/issues/300 Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send Mock.XHR.prototype.send = function () { if (this.custom.xhr) { this.custom.xhr.withCredentials = this.withCredentials || false if (this.responseType) { this.custom.xhr.responseType = this.responseType } } this.proxy_send(...arguments) } function param2Obj(url) { const search = url.split('?')[1] if (!search) { return {} } return JSON.parse( '{"' + decodeURIComponent(search) .replace(/"/g, '\\"') .replace(/&/g, '","') .replace(/=/g, '":"') .replace(/\+/g, ' ') + '"}' ) } function XHR2ExpressReqWrap(respond) { return function (options) { let result = null if (respond instanceof Function) { const { body='{}', method, url } = options // https://expressjs.com/en/4x/api.html#req try{ result = respond({ url, method, body: JSON.parse(body), query: param2Obj(url) }) }catch(error){ console.log(body, error) } } else { result = respond } return Mock.mock(result) } } for (const i of mocks) { Mock.mock(new RegExp(`${i.url}`), i.type || 'get', XHR2ExpressReqWrap(i.response)) } }