You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.4 KiB
						
					
					
				
								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
							 | 
						|
								}
							 | 
						|
								
							 |