在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

幾種常用的mock方案

Testin云測 ? 來源:Testin云測 ? 2024-06-04 10:08 ? 次閱讀

前言

工具好不好用,關(guān)鍵在于用。

肯定有很多前端程序猿聯(lián)調(diào)前很悠閑,但聯(lián)調(diào)階段持續(xù)加班,直到提測、上線。

這其中緣由不外乎需求不明確等原因,但如果我們能在聯(lián)調(diào)前完成大部分工作,相信就能準(zhǔn)點下班啦。如果你也有類似的現(xiàn)象,希望能看完此篇,或許能讓你在不協(xié)調(diào)的工作中解放出來。

背景

在開發(fā)環(huán)境中,由于后端與前端并行開發(fā)、或者前端需要等待后臺接口開發(fā)。接口直接嚴(yán)重依賴,生成數(shù)據(jù)的業(yè)務(wù)邏輯復(fù)雜等,嚴(yán)重影響了開發(fā)效率。

因此學(xué)會使用最適合自己的 Mock 數(shù)據(jù)的方法就非常重要。

下面介紹了幾種常用的mock方案,通過了解自動化mock的方式,減少重復(fù)工作,減少真實聯(lián)調(diào)問題,我們可以根據(jù)開發(fā)場景,選擇并配置最合適自己的方案。

六類常用的MOCK方案說明

方案①:代碼侵入 (實際開發(fā)中最常用,但不推薦)

特點:直接在代碼中寫死 Mock 數(shù)據(jù),或者請求本地的 JSON 文件
優(yōu)點:無
缺點:

和其他方案比 Mock 效果不好

與真實 Server 環(huán)境的切換非常麻煩,一切需要侵入代碼切換環(huán)境的行為都是不好的

方案②:接口管理工具

代表:

rap[1](阿里,已停止維護,使用rap2)

地址: https://github.com/thx/RAP

swagger[2]

地址:https://swagger.io/

moco[3](和前端處理mock類似,json假數(shù)據(jù)+服務(wù))

地址:https://github.com/dreamhead/moco

yapi[4](去哪兒網(wǎng)開發(fā)yapi 官網(wǎng))

地址:https://github.com/YMFE/yapi

優(yōu)缺點(接口管理工具)

優(yōu)點:

配置功能強大,接口管理與 Mock 一體,后端修改接口 Mock 也跟著更改,可靠

有統(tǒng)一的接口管理后臺,查找使用方便。

缺點:

配置復(fù)雜,依賴后端,可能會出現(xiàn)后端不愿意出手,或者等配置完了,接口也開發(fā)出來了的情況。mock數(shù)據(jù)都由后臺控制,有什么異常情況 前端同學(xué)基本上使不上力。有背前后臺分離的原則。

一般會作為大團隊的基礎(chǔ)建設(shè)而存在, 沒有這個條件的話需慎重考慮

增加后臺負擔(dān),與其讓后臺處理mock數(shù)據(jù)相關(guān)問題,倒不如加快提供真實接口數(shù)據(jù)。

方案③:本地 node 服務(wù)器

代表:json-server[5]
原理:使用lowdb,操作本地小型的數(shù)據(jù)庫(遵循 REST API)。特點:

可以獨立使用,也可以作為node服務(wù)的中間件server.use(db)

db可以是json文件(更直觀),也可以使js文件(靈活性更高)

可以設(shè)置跨域、開啟gzip、設(shè)置延時、日志、指定路由等。json-server [options]

可命令行啟動或json-server.json配置后直接啟動

可以自定義路由映射(key為真實路由、value為mock路由)

輕而易舉的實現(xiàn)后臺功能

過濾:GET /list?name.age=18;
分頁:/users?_page=3&_limit=5
排序:/users?_sort=id&_order=desc
分隔:/users?_start=2&_end=5
運算:使用_gte 或_lte 選取一個范圍、使用_ne 排除一個值、使用_like 進行模糊查找(支持正則表達式)
......

服務(wù)管理

增刪改查參考postman示例。(注意body-raw要選擇json模式)

優(yōu)點:

配置簡單,json-server 甚至可以 0 代碼 30 秒啟動一個 REST API Server

自定義程度高,一切盡在掌控中

增刪改查真實模擬

缺點:

與接口管理工具相比,無法隨著后端 API 的修改而自動修改

地址:https://github.com/typicode/json-server

方案④:請求攔截[MOCKJS]

代表:Mock.js[6]

特點:

通過攔截特定的AJAX請求,并生成給定的數(shù)據(jù)類型的隨機數(shù),以此來模擬后端同學(xué)提供的接口。

使用數(shù)據(jù)模板定義,隨機生成定義數(shù)據(jù)的自由度大。使用MockJS的Random工具類的方法定義,這種方式自由度小,只能隨機出MockJS提供的數(shù)據(jù)類型。

一般配合其它庫使用或單獨在項目中使用或者通過反向代理來實現(xiàn)。

地址:http://mockjs.com/

使用格式說明:

Mock.mock( rurl?, rtype?, template|function( options ) )

rurl:可選,攔截的url地址,可以是字符串或正則(常用)

rtype: 可選,攔截的請求類型,字符串(對大小寫敏感,必須小寫)。

template|function( options ):必須,攔截后返回的數(shù)據(jù)。template一般為json對象類型;function在return時需要返回template,其中option包含請求的url、type和body屬性

只傳template,則執(zhí)行Mock.mock后返回的是``template的實際結(jié)果``。

簡單示例展示:

隨機生成顏色

Mock.mock('@color')
"#f279ba"

隨機生成郵箱

Mock.mock('@email')
"k.fxnx@newvwi.gf"

隨機生成ip

Mock.mock('@ip')
"44.122.28.106"

隨機生成區(qū)域地址

Mock.mock('@region')
"東北"

還能隨機生成圖片(并可傳參配置圖片大小、顏色等)

Random.image()

隨機生成日期時間

Random.date()
//=>"2020-10-23"
Random.date('yyyy-MM-dd')
//=>"1998-01-29"
Random.time()
//=>"2256"
Mock.mock('@time')
//=>"0117"

按規(guī)則生成字符串

//指定范圍的數(shù)量
Mock.mock({"string|1-10":"★"})//執(zhí)行后
{"string":"★★"}//隨機生成數(shù)量為1-10個'*'字符串

//固定數(shù)量
Mock.mock({"string|3":"*"})//執(zhí)行后
{"string":"***"}//生成指定數(shù)量的'*'(示例是3個)字符串

生成指定范圍內(nèi)的數(shù)字

//整數(shù)
Mock.mock({"number|1-100":100})//執(zhí)行后
{"number":84}//生成1-100范圍內(nèi)的數(shù)字

//小數(shù)
Mock.mock({"number|1-100.1-10":1})//執(zhí)行后
{"number":72.15917}//生成1-100的數(shù)字,隨機保留1-10位小數(shù)

生成隨機的對象數(shù)量

Mock.mock({"object|2-4":{
"110000":"北京市",
"120000":"天津市",
"130000":"河北省",
"140000":"山西省"
}})
//執(zhí)行后,隨機獲取對象中的2-4項
{"object":{
"120000":"天津市",
"130000":"河北省"
}}

生成指定數(shù)量的數(shù)組

Mock.mock({"array|1":["AMD","CMD","UMD"]})
{"array":"CMD"}//隨機獲取對象中的一項

生成對象數(shù)組

// list指定了數(shù)組當(dāng)中的對象數(shù)量,最少一項,最多10項。
Mock.mock({
//屬性list的值是一個數(shù)組,其中含有1到10個元素
'list|1-10':[{
//屬性id是一個自增數(shù),起始值為1,每次增1
'id|+1':1
}]
})
//隨機的結(jié)果
{
"list":[
{
"id":1
},
{
"id":2
}
]
}

......

更多示例可查看官方鏈接: http://mockjs.com/examples.html

語法規(guī)范

> 數(shù)據(jù)模板定義

定義規(guī)則:'key|rules': value

屬性值的數(shù)據(jù)類型可以是Number、Boolean、String、Object、Array、Function、Null,不可以是Undefined

'name|min-max':value
'name|count':value
'name|min-max.dmin-dmax':value
'name|min-max.dcount':value
'name|count.dmin-dmax':value
'name|count.dcount':value
'name|+step':value
'regexp':/d{5,10}/,

攔截接口返回示例:

步驟:
1.創(chuàng)建mock.js文件
//正則匹配/notification/count/的接口
Mock.mock(/notification/count/,{
"code":200,
"msg":"success",
"data":{
"count":3
}
})
2.在入口中引入mock即可

其它優(yōu)化:
在npm script中增加命令并添加mock環(huán)境變量,開發(fā)環(huán)境中用該命令啟動。
在入口文件中使用mock環(huán)境變量判斷是否加載mock.js,使mock數(shù)據(jù)和業(yè)務(wù)代碼徹底分離。

> 查看和使用random

全局使用

npminstallmockjs-g
random-h查看可使用的模板

局部使用

隨機生成數(shù)據(jù)

Mock.mock( { email: '@email' } )占位符 等同于 調(diào)用了Mock.Random.email(), 隨機生成email。

還可隨機生成圖片、顏色、地址、網(wǎng)址、自增數(shù)等。

3.擴展模板(自定義MOCK數(shù)據(jù)的模板)

Random.extend({
constellation:function(date){
varconstellations=['白羊座','金牛座','雙子座','巨蟹座','獅子座','處女座','天秤座','天蝎座','射手座','摩羯座','水瓶座','雙魚座']
returnthis.pick(constellations)
}
})

> Mock.valid(template, data) 校驗數(shù)據(jù)

vartempObj={
"user|1-3":[{'name':'@name','id|28-338':88}]
};
varrealData={"user":[{'name':'張三','id':90}]};
//校驗通過返回空數(shù)據(jù),不通過則返回原因。(可以有多條原因,因此返回的是數(shù)組對象結(jié)構(gòu))
console.log(Mock.valid(tempObj,realData));

> Mock.toJSONSchema( template )

把 Mock.js 風(fēng)格的數(shù)據(jù)模板template轉(zhuǎn)換成JSON Schema[11]。

> Mock.setup( settings )

配置攔截 Ajax 請求時的行為。支持的配置項有:timeout。

Mock.setup({
timeout:400
})
Mock.setup({
timeout:'200-600'
})

優(yōu)缺點(MOCKJS)

優(yōu)點:

與前端代碼分離

可生成隨機數(shù)據(jù)

缺點:

數(shù)據(jù)都是動態(tài)生成的假數(shù)據(jù),無法真實模擬增刪改查的情況

只支持 ajax,不支持 fetch

方案⑤:抓包工具

利用Charles、Fiddler等代理工具,
常見的處理方式有

將 URL 映射到本地文件;(調(diào)試APP混合開發(fā)等)

debugger某個url,修改響應(yīng)數(shù)據(jù)。

攔截后返回本地的數(shù)據(jù),如Charles,直接采用Map locale 或者 Map Remote的方式。

右擊url, copy response

在本地新建mock json數(shù)據(jù),然后將response粘貼修改

再次訪問url,觀察api的變化。

優(yōu)缺點:

優(yōu)點:mock便于混合開發(fā)的問題排查、線上問題排查等。
缺點:調(diào)試相對繁瑣。

方案⑥:組合模式

代表:easy-mock(提供在線服務(wù)和接口代理,支持mockjs、Swagger、restapi風(fēng)格)
node框架生成器 +json-server+ mockjs。

REST API

URI 代表 資源/對象,METHOD 代表行為www.ruanyifeng.com/blog/2014/0…[15]

GET/tickets//列表
GET/tickets/12//詳情
POST/tickets//增加
PUT/tickets/12//替換
PATCH/tickets/12//修改
DELETE/tickets/12//刪除
資源負數(shù)名稱表示對應(yīng)表的資源集合,方法動詞。

其它方案參考

apifox

API 文檔、調(diào)試、Mock、自動化測試一體化協(xié)助平臺[17]
看評論推薦的人還真不少,感興趣的小伙伴可以嘗試一下。支持 HTTP、TCP、RPC,(2020-12-28首版發(fā)布)

常用解決方案:

使用 Swagger 管理 API 文檔

使用 Postman 調(diào)試 API

使用 RAP 等工具 Mock API 數(shù)據(jù)

使用 JMeter 做 API 自動化測試

jsonplaceholder

很方便,直接fetch遠程的數(shù)據(jù)即可,高效易用jsonplaceholder官方文檔

地址:https://jsonplaceholder.typicode.com

最后

Mock不只是mock數(shù)據(jù),還可以mock功能的。我們通過使用Mock盡可能的完善功能,才能在聯(lián)調(diào)時事半功倍。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7030

    瀏覽量

    89034
  • 前端
    +關(guān)注

    關(guān)注

    1

    文章

    192

    瀏覽量

    17752
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68612

原文標(biāo)題:推薦六款實用Mock神器,終有一款適合你!

文章出處:【微信號:TestinChina,微信公眾號:Testin云測】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    分享幾種常用的驅(qū)動電路

    MOS管因為其導(dǎo)通內(nèi)阻低,開關(guān)速度快,因此被廣泛應(yīng)用在開關(guān)電源上。而用好一個MOS管,其驅(qū)動電路的設(shè)計就很關(guān)鍵。下面分享幾種常用的驅(qū)動電路。
    發(fā)表于 05-12 15:57 ?3525次閱讀
    分享<b class='flag-5'>幾種</b><b class='flag-5'>常用</b>的驅(qū)動電路

    mock數(shù)據(jù)方法

    #hello,JS:13-02前后端交互+mock數(shù)據(jù)
    發(fā)表于 06-05 16:32

    常用幾種接地方法?

    簡單列舉幾種常用的接地方法
    發(fā)表于 03-29 08:20

    請問幾種常用的網(wǎng)絡(luò)協(xié)議是什么?

    請問幾種常用的網(wǎng)絡(luò)協(xié)議是什么?
    發(fā)表于 10-27 07:56

    幾種常用高速邏輯電平電路的特點及應(yīng)用

    幾種常用邏輯電平電路的特點及應(yīng)用 幾種常用邏輯電平電路的特點及應(yīng)用 標(biāo)簽/分類: 在通用的電子器件設(shè)備中,TTL和CMOS電路的應(yīng)用非常廣泛。但
    發(fā)表于 08-21 15:34 ?1398次閱讀
    <b class='flag-5'>幾種</b><b class='flag-5'>常用</b>高速邏輯電平電路的特點及應(yīng)用

    常用幾種充電電池基本常識

    常用幾種充電電池基本常識 一、充電電池簡介 充電電池的種類 鎳鎘電池(
    發(fā)表于 11-02 20:35 ?4.4w次閱讀

    幾種常用電阻的結(jié)構(gòu)和特點

    幾種常用電阻的結(jié)構(gòu)和特點 電阻種類
    發(fā)表于 11-27 09:54 ?1250次閱讀

    幾種常用電容器的結(jié)構(gòu)和特點簡介

    幾種常用電容器的結(jié)構(gòu)和特點簡介 電容器是電子設(shè)備中常用的電子元件,下面對幾種常用電容器的結(jié)構(gòu)和特點作
    發(fā)表于 03-31 10:07 ?831次閱讀

    幾種分析電路的常用方法

    幾種分析電路的常用方法,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 17:15 ?0次下載

    幾種常用單片機介紹

    單片機種類繁多,但是一般常用的有以下幾種
    發(fā)表于 02-21 08:45 ?6921次閱讀

    深度剖析基于Python中的Mock

    我發(fā)現(xiàn)自己在學(xué)習(xí)mock的過程中遇到的主要困難是不清楚mock能做什么,而不是mock對象到底有哪些函數(shù)。因此寫這篇文章的主要目的是為了說明mock能做什么。
    的頭像 發(fā)表于 01-30 15:26 ?4618次閱讀
    深度剖析基于Python中的<b class='flag-5'>Mock</b>

    幾種常用DCDC元器件資料匯總

    幾種常用DCDC元器件資料匯總
    發(fā)表于 11-01 17:23 ?28次下載

    Linux內(nèi)核常用幾種鏡像文件

    簡述幾種常用的內(nèi)核鏡像文件:vmlinux、Image、zImage、bzImage、uImage、bootpImage、XIPImage等等。
    發(fā)表于 06-23 11:49 ?1.2w次閱讀
    Linux內(nèi)核<b class='flag-5'>常用</b>的<b class='flag-5'>幾種</b>鏡像文件

    幾種常用的產(chǎn)生負電源的方法

    幾種常用的產(chǎn)生負電源的方法
    的頭像 發(fā)表于 12-05 15:54 ?1445次閱讀
    <b class='flag-5'>幾種</b><b class='flag-5'>常用</b>的產(chǎn)生負電源的方法

    三種Mock測試方案的應(yīng)用與實踐總結(jié)

    在面向?qū)ο蟪绦蛟O(shè)計中,模擬對象(英語:mock object,也譯作模仿對象)是以可控的方式模擬真實對象行為的假的對象。程序員通常創(chuàng)造模擬對象來測試其他對象的行為,很類似汽車設(shè)計者使用碰撞測試假人來模擬車輛碰撞中人的動態(tài)行為。
    的頭像 發(fā)表于 04-28 17:50 ?1490次閱讀
    三種<b class='flag-5'>Mock</b>測試<b class='flag-5'>方案</b>的應(yīng)用與實踐總結(jié)
    主站蜘蛛池模板: 5g影院午夜伴侣| h网站在线| 久久澡| 色男人社区| 白丝丝袜高跟国产在线视频| 韩彩英三级无删版甜性涩爱| 久久婷婷婷| 欧美a一级| 啪视频免费| 黄网站色在线视频免费观看| 欧美日韩亚洲色图| 特黄级| 刺激一区| 国产图片区| 99久久免费午夜国产精品| 亚洲大色| wwwxx免费| 5566成人| 女人张开双腿让男人桶完整| 日本加勒比在线精品视频| 九九热视频免费在线观看| 六月天丁香婷婷| 精品黄色片| 五月综合久久| 亚洲我射| 免费日本视频| 国产色婷婷免费视频| 在线网站黄| 日韩美毛片| 人人干视频| 亚洲色图狠狠干| 97影院理论午夜论不卡| 同性同男小说肉黄| 久久九九国产精品怡红院| 干干天天| 日韩有色| 狠狠操天天操视频| 色婷婷免费视频| 人人免费操| 五月婷婷色网| 天天插天天射天天干|