58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | const Mock = require('mockjs') | ||
|  | const { param2Obj } = require('./utils') | ||
|  | 
 | ||
|  | const user = require('./user') | ||
|  | const table = require('./table') | ||
|  | 
 | ||
|  | const mocks = [ | ||
|  |   ...user, | ||
|  |   ...table | ||
|  | ] | ||
|  | 
 | ||
|  | // 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).
 | ||
|  | function mockXHR() { | ||
|  |   // 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 XHR2ExpressReqWrap(respond) { | ||
|  |     return function(options) { | ||
|  |       let result = null | ||
|  |       if (respond instanceof Function) { | ||
|  |         const { body, type, url } = options | ||
|  |         // https://expressjs.com/en/4x/api.html#req
 | ||
|  |         result = respond({ | ||
|  |           method: type, | ||
|  |           body: JSON.parse(body), | ||
|  |           query: param2Obj(url) | ||
|  |         }) | ||
|  |       } else { | ||
|  |         result = respond | ||
|  |       } | ||
|  |       return Mock.mock(result) | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   for (const i of mocks) { | ||
|  |     Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response)) | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = { | ||
|  |   mocks, | ||
|  |   mockXHR | ||
|  | } | ||
|  | 
 |