使用Mockjs模擬(假數據)接口(axios)

?一、什么是MockJs

Mock.js官網

Mock.wiki.git?

mock測試就是在測試過程中,對于某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以便測試的測試方法。

?二、安裝mockjs

npm install mockjs

三、 MockJs使用

簡單使用:

// 使用 Mock
var Mock = require('mockjs')
var data = Mock.mock({// 屬性 list 的值是一個數組,其中含有 1 到 10 個元素'list|1-10': [{// 屬性 id 是一個自增數,起始值為 1,每次增 1'id|+1': 1}]
})
// 輸出結果
console.log(JSON.stringify(data, null, 4))

項目目錄如下:?

?

?具體步驟:

【1】新建一個mock文件夾,定義一個index.js文件:

在 src下面創建一個mock目錄,創建一個index.js文件,其它模擬的數據都放在和index.js文件同級,遍歷所有mock下面的文件然后注冊mock服務。

import Mock from 'mockjs'
// //開啟mock
// window.EVN_CONFIG.baseApiUrl = "http://127.0.0.1:8080"
// window.EVN_CONFIG.ssoApiUrl = "http://127.0.0.1:8080"
// window.EVN_CONFIG.baseApiRoot = "/api"
// window.EVN_CONFIG.mock = true// 設置響應延時
Mock.setup({// 可以是整數,也可以是‘-’字符串timeout: '200-600'
})// const evnConfig = window.EVN_CONFIG
const evnConfig = {baseApiUrl: 'http://127.0.0.1:8080',ssoApiUrl: 'http://127.0.0.1:8080',baseApiRoot: '',// baseApiRoot: '/api',mock: true
}let configArray = []if (evnConfig.mock) {// 使用webpack的require.context()遍歷所有的mock文件const files = require.context('.', true, /\.js$/)files.keys().forEach((key) => {// console.log("🚀 ~ file: index.js:43 ~ files.keys ~ key:", key)if (key === './index.js') return// configArray = configArray.concat(files(key).default)configArray = configArray.concat(files(key))// console.log("🚀 ~ file: index.js:43 ~ files.keys ~ files(key):", files(key))// console.log("🚀 ~ file: index.js:43 ~ files.keys ~ files(key).default:", files(key).default)// console.log("🚀 ~ file: index.js:43 ~ files.keys ~ configArray:", configArray)})// 注冊所有的mock服務configArray.forEach((item) => {console.log("🚀 ~ file: index.js:45 ~ configArray.forEach ~ item:", item)let url = evnConfig.baseApiUrlurl += item.url/*** RegExp(url + '.*') 使用正則匹配URL* item.method 請求的方法 POST/GET/PUT/DELETE* (options) => {} 返回的函數* options 可以獲取到 body, type, url*/Mock.mock(RegExp(url + '.*'), item.method, (options) => {console.debug(url, options)return Mock.mock(item.response)})})
}

【2】在main.js文件內引入:

import './mock/index'

【3】新建頁面的mockjs文件,如tableLinkage.js:

const Mock = require('mockjs')
// 對表格數據分頁
const getSelectList = (data, pageNum, pageSize) => {const start = Math.ceil(((pageNum - 1) * pageSize).toFixed(0)),end = Math.ceil((start + pageSize).toFixed(2))const list = data.slice(start >= 0 ? start : 0, end)return list
}
Mock.mobile_prefix = ["134","135","136","137","138","139","150","151","152","157","158","159","130","131","132","155","156","133","153"
]
Mock.bank_prefix = ["4367","6227","6228","9559","6222","9558","6216","4563","6013","6221","6210","6014","5218","6282","3568","6226","4218","6229","4864","6029","9988"
]
Mock.numeric = "0123456789"
Mock.random = (len, list) => {if (len <= 1) {len = 1}var s = ""var n = list.lengthif (typeof list === "string") {while (len-- > 0) {s += list.charAt(Math.random() * n)}} else if (list instanceof Array) {while (len-- > 0) {s += list[Math.floor(Math.random() * n)]}}return s
}
Mock.getMobile = () => {return Mock.random(1, Mock.mobile_prefix) + Mock.random(8, Mock.numeric)
}
Mock.getBank = () => {return Mock.random(1, Mock.bank_prefix) + Mock.random(15, Mock.numeric)
}
const Random = Mock.Random
const tableLinkageData = Mock.mock({//輸出數據//還可以自定義其他數據// code: 200,// msg: '操作成功',// total: 75,"data|75": [{// 'id': "@increment",'id|+1': 1,'bankAccountId': '@id()','companyCode|+1': 1,// 'companyName': `公司${'@increment(1)'}`,'accountType|1': ['1', '2'],// 'accountTypeDesc|1': ['銀行帳號', '虛擬子戶'],'no': '@string(3,50)', // 生成3-50位的保養合同號'subBranch': Random.cword(2,4)+'銀行','cardNum': /^([1-9]{1})(\d{14}|\d{18})$/, // 隨機生成銀行卡卡號// 'cardNum': Mock.getBank(), // 隨機生成銀行卡卡號(統一19位)'phone': Mock.getMobile(), // 手機號// 'phone': /^1[358][1-9]\d{8}/,'name': `${Random.first()} ${Random.last()}`, // 人員姓名'groups': Random.integer(), // 組織編號'groupNames': `${Random.first()} ${Random.last()}`, // 組織名稱// 'idCard': Random.integer(), // 身份證'desc': Random.cparagraph(),'avatar': Random.image('250x250', Random.color()),'qrCode': Random.image('720x300', Random.color(), 'bg-img'), //二維碼'address': Random.city(true),'status|1': ['0', '1'],'type|1': ['0', '1'],// 'statusDesc|1': ['啟用', '禁用'],'jobType|1': ['前端工程師', '后端工程師', 'UI工程師', '需求工程師'],'preview': Random.ctitle(3, 5),'email': '@email','remark': "@csentence(50)",'createdBy': "@cname()",'createdAt': "@date(yyyy-MM-dd)",'updatedBy': "@cname()",'updatedAt': "@date(yyyy-MM-dd hh:mm:ss)",}]
})Mock.mock('/vue-table-list/tableLinkage/list', 'post', (option) => {// console.log("🚀 ~ file: tableLinkage.js:66 ~ Mock.mock ~ option:", option)const params = JSON.parse(option.body)const paramsKeyArr = Object.keys(params)// console.log("🚀 ~ file: tableLinkage.js:47 ~ Mock.mock ~ paramsKeyArr:", paramsKeyArr)// console.log("🚀 ~ file: tableLinkage.js:46 ~ Mock.mock ~ params:", params)// console.log("🚀 ~ file: tableLinkage.js:140 ~ queryList ~ tableLinkageData:", tableLinkageData)const paramsMap = {'companyCodeList': 'companyCode'}const multipleArr = tableLinkageData.data.filter(item => {let key = 'companyCodeList'if (params[key].length === 0) {return true} else {let flag = falseparams[key].map(value => {if (value && (item[paramsMap[key]] + '') === (value + '')) {flag = true}})return flag}})// console.log("🚀 ~ file: tableLinkage.js:149 ~ multipleArr ~ multipleArr:", multipleArr)const queryList = multipleArr.filter(item => {// const queryList = tableLinkageData.data.filter(item => {let flag = trueparamsKeyArr.map(key => {if (key !== 'companyCodeList') {if (params[key] && item[key]?.indexOf(params[key]) === -1) {flag = false}}})return flag})// console.log("🚀 ~ file: tableLinkage.js:61 ~ queryList ~ queryList:", queryList)const list = getSelectList(queryList, params.pageNum, params.pageSize)// console.log("🚀 ~ file: tableLinkage.js:48 ~ Mock.mock ~ list:", list)return {code: 200,msg: '操作成功',total: tableLinkageData.data.length,data: null,rows: [...list]}
})

可配合axios,封裝使用,具體見這篇文章:簡單封裝axios(可配合mockjs使用)對請求方法進行二次封裝-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215747.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215747.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215747.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JFrog----常見的開源協議以及應用注意點

文章目錄 1. MIT 許可證2. GPL&#xff08;通用公共許可證&#xff09;3. LGPL&#xff08;較寬松的通用公共許可證&#xff09;4. Apache 許可證 2.05. BSD 許可證開源協議的選擇和注意點結論 開源軟件近年來在軟件開發中變得越來越流行。使用開源軟件可以節省時間和資源&…

Unity優化——加速物理引擎1

大家好&#xff0c;這里是七七&#xff0c;今天開始更新物理引擎相關的優化部分了&#xff0c;本文介紹的是物理引擎內部工作情況。 Unity技術有兩種不同的物理引擎&#xff1a;用于3D物理的Nvidia的PhysX和用于2D物理的開源項目Box2D。然而&#xff0c;Unity對它們的實現是高…

Nginx rewrite 參數

目錄 常用的Nginx 正則表達式 rewrite 和 location的區別 location location 大致分三類&#xff1a; location 常用的匹配規則&#xff1a; location 優先級&#xff1a; rewrite rewrite跳轉實現 rewrite 執行順序如下 語法格式 flag標記說明 rewrite實際操作 基…

【虹科干貨】使用Netropy廣域網模擬器測試簡化SD-WAN測試

文章速覽&#xff1a; 為什么需要WAN模擬器&#xff1f;什么是WAN模擬器&#xff1f;用WAN模擬器測試SD-WANSD-WAN損傷測試 現如今大家都在使用SD-WAN產品節省網絡成本&#xff0c;但是也面臨著一些復雜的算發問題&#xff0c;那么如何簡化SD-WAN系統的測試和評估&#xff1f;…

Ubuntu部署EMQX開源版MQTT服務器-Orange Pi部署-服務器部署

一、前言 作為全球最具擴展性的 MQTT 消息服務器&#xff0c;EMQX 提供了高效可靠海量物聯網設備連接&#xff0c;能夠高性能實時移動與處理消息和事件流數據&#xff0c;本文將介紹如何在Ubuntu 22.04上部署MQTT服務器。我們本次選擇開源版&#xff0c;使用離線安裝方式部署。…

總結6種@Transactional注解的失效場景

作者簡介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中興通訊、美團架構師&#xff0c;現某互聯網公司CTO 聯系qq&#xff1a;184480602&#xff0c;加我進群&#xff0c;大家一起學習&#xff0c;一起進步&#xff0c;一起對抗互聯網寒冬 引言 昨天有粉絲咨詢了…

超卓航科引領冷噴涂增材制造革新,推動先進核反應堆發展

近日&#xff0c;超卓航科憑借其卓越的冷噴涂增材制造技術&#xff0c;成為推動核能領域創新的重要力量。該公司利用冷噴涂工程技術&#xff0c;或為核反應堆的制造和修復開辟了全新的道路。 冷噴涂技術是一種頗具前景的固態粉末沉積方法&#xff0c;可用于涂層制造、增材制造和…

GNSS - PPP軟件 - GAMP 在VS2019/2022下完成調試、跑通程序(超詳細!)

目錄 一、前期準備 二、調試詳細步驟 1.VS中新建項目 2.復制源碼至項目文件夾 3.將源碼中“.c”文件和“.h”文件添加至項目指定位置 4.修改項目屬性&#xff1a; (1)【 配置屬性 -> C/C ->預處理器 ->預處理器定義】添加如下 (2)【配置屬性->鏈接器->調…

《C++ Primer》第12章 動態內存(二)

參考資料&#xff1a; 《C Primer》第5版《C Primer 習題集》第5版 12.1.5 unique_ptr&#xff08;P417&#xff09; unique “擁有”它所指向的對象&#xff0c;某個時刻只能有一個 unique_ptr 指向一個給定對象。 當我們定義一個 unique_ptr 時&#xff0c;需要將其綁定到…

游戲中小地圖的制作__unity基礎開發教程

小地圖的制作 Icon標識制作制作攝像機映射創建地圖UI效果“不一樣的效果” 在游戲中經常可以看到地圖視角的存在&#xff0c;那么地圖視角是如何讓實現的呢&#xff1f; 這一期教大家制作一個簡易的小地圖。 &#x1f496;點關注&#xff0c;不迷路。 老樣子&#xff0c;我們還…

Leetcode 131 分割回文串

題意理解&#xff1a; 分割回文子串&#xff0c;可以看作是劃分連續的字幕組合——所以也可以用回溯的方法來解決 每個位置選與不選——該位置切割|不切割 對于每一段子串——>判斷是否是回文串&#xff1a; 是&#xff1a; 繼續切割 不是&#xff1a; 剪枝 解題方法…

Ubuntu Destktop 22.04 設置 ssh 超時時間

Ubuntu Destktop 22.04 使用 ssh 連接服務器時&#xff0c;發現一段時間不操作就會自動斷開連接&#xff0c;解決方法如下&#xff1a; 打開 /etc/ssh/ssh_config 文件&#xff1a; sudo vim /etc/ssh/ssh_config在文件最后添加&#xff1a; # ssh 客戶端會每隔 30 秒發送一…

在線免費制作各種證件照,有需要的收藏

現在很多場合都需要一寸證件照&#xff0c;比如辦理身份證、出國簽證等。以往&#xff0c;我們都需要到專門的照相館拍攝&#xff0c;但是現在&#xff0c;有了隨時照微信小程序&#xff08;抖音和支付搜索億鳴證件照哦&#xff09;&#xff0c;你可以足不出戶就能夠制作一寸證…

linux shell

文章目錄 預設參數腳本自動開終端if語句語法常用判斷命令文件/目錄判斷&#xff1a;字符串判斷數值判斷邏輯判斷 if高級特性&#xff1a; 預設參數 $$ Shell本身的PID&#xff08;ProcessID&#xff09;$! Shell最后運行的后臺Process的PID$? 最后運行的命令的結束代碼&#…

MySQL InnoDB Replication部署方案與實踐

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 團隊在 2020 年推出的一款產品&#xff0c;用來幫助用戶快速部署和管理主從復制&#xff0c;在數據庫層仍然使用的是主從復制技術。 ReplicaSet 主要包含三個組件&#xff1a;MySQL Router、MySQL Server 以及 MySQL Shell 高級客戶…

eventBus父組件$emit一次子組件多次收到¥

eventBus父組件$emit一次子組件多次收到$on 參考&#xff08;EventBus踩坑1-CSDN博客&#xff09; 父組件emit出了事件&#xff0c;這個過程需要一定時間&#xff0c;這段時間過長&#xff0c;子組件還未接收到父組件的emit&#xff0c;父組件認為子組件沒有收到&#xff0c;…

12 位多通道國產芯片ACM32F403/F433 系列,支持 MPU 存儲保護功能,應用于工業控制,智能家居等產品中

ACM32F403/F433 芯片的內核基于 ARMv8-M 架構&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片內核 支持一整套DSP指令用于數字信號處理&#xff0c;支持單精度FPU處理浮點數據&#xff0c;同時還支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升應用的…

Java - Mybatis借助PageHelper實現分頁,集成SpringBoot

未使用SpringBoot 第?步&#xff1a;引?依賴 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version> </dependency> 第?步&#xff1a;在mybatis-config.xml…

PyTorch張量:內存布局

你可能對 torch 上的某些函數感到困惑&#xff0c;它們執行相同的操作但名稱不同。 例如&#xff1a; reshape()、view()、permute()、transpose() 等。 這些函數的做法真的不同嗎&#xff1f; 不&#xff01; 但為了理解它&#xff0c;我們首先需要了解一下張量在 pytorch 中…

1 CPU實現的基本框圖

匯編語言 && 指令格式 CPU設計的框架&#xff1a;三級流水線 ROM存放指令和數據&#xff0c;大端模式&小端模式&#xff0c;地址對齊 取指 譯碼&#xff1a; 執行&#xff1a; 匯編語言 & 指令格式 流水線實現工作機制 模塊功能劃分&接口信號 參考…