一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

幾種常用的mock方案

Testin云測(cè) ? 來(lái)源:Testin云測(cè) ? 2024-06-04 10:08 ? 次閱讀

前言

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

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

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

背景

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

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

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

六類常用的MOCK方案說(shuō)明

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

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

和其他方案比 Mock 效果不好

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

方案②:接口管理工具

代表:

rap[1](阿里,已停止維護(hù),使用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)開(kāi)發(fā)yapi 官網(wǎng))

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

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

優(yōu)點(diǎn):

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

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

缺點(diǎn):

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

一般會(huì)作為大團(tuán)隊(duì)的基礎(chǔ)建設(shè)而存在, 沒(méi)有這個(gè)條件的話需慎重考慮

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

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

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

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

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

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

可命令行啟動(dòng)或json-server.json配置后直接啟動(dòng)

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

輕而易舉的實(shí)現(xiàn)后臺(tái)功能

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

服務(wù)管理

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

優(yōu)點(diǎn):

配置簡(jiǎn)單,json-server 甚至可以 0 代碼 30 秒啟動(dòng)一個(gè) REST API Server

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

增刪改查真實(shí)模擬

缺點(diǎn):

與接口管理工具相比,無(wú)法隨著后端 API 的修改而自動(dòng)修改

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

方案④:請(qǐng)求攔截[MOCKJS]

代表:Mock.js[6]

特點(diǎn):

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

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

一般配合其它庫(kù)使用或單獨(dú)在項(xiàng)目中使用或者通過(guò)反向代理來(lái)實(shí)現(xiàn)。

地址:http://mockjs.com/

使用格式說(shuō)明:

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

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

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

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

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

簡(jiǎn)單示例展示:

隨機(jī)生成顏色

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

隨機(jī)生成郵箱

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

隨機(jī)生成ip

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

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

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

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

Random.image()

隨機(jī)生成日期時(shí)間

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":"★★"}//隨機(jī)生成數(shù)量為1-10個(gè)'*'字符串

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

生成指定范圍內(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ù)字,隨機(jī)保留1-10位小數(shù)

生成隨機(jī)的對(duì)象數(shù)量

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

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

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

生成對(duì)象數(shù)組

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

......

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

語(yǔ)法規(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)境變量,開(kāi)發(fā)環(huán)境中用該命令啟動(dòng)。
在入口文件中使用mock環(huán)境變量判斷是否加載mock.js,使mock數(shù)據(jù)和業(yè)務(wù)代碼徹底分離。

> 查看和使用random

全局使用

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

局部使用

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

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

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

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

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

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

vartempObj={
"user|1-3":[{'name':'@name','id|28-338':88}]
};
varrealData={"user":[{'name':'張三','id':90}]};
//校驗(yàn)通過(guò)返回空數(shù)據(jù),不通過(guò)則返回原因。(可以有多條原因,因此返回的是數(shù)組對(duì)象結(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 請(qǐng)求時(shí)的行為。支持的配置項(xiàng)有:timeout。

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

優(yōu)缺點(diǎn)(MOCKJS)

優(yōu)點(diǎn):

與前端代碼分離

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

缺點(diǎn):

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

只支持 ajax,不支持 fetch

方案⑤:抓包工具

利用Charles、Fiddler等代理工具,
常見(jiàn)的處理方式有

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

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

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

右擊url, copy response

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

再次訪問(wèn)url,觀察api的變化。

優(yōu)缺點(diǎn):

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

方案⑥:組合模式

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

REST API

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

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

其它方案參考

apifox

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

常用解決方案:

使用 Swagger 管理 API 文檔

使用 Postman 調(diào)試 API

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

使用 JMeter 做 API 自動(dòng)化測(cè)試

jsonplaceholder

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

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

最后

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

審核編輯:彭菁

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

    關(guān)注

    8

    文章

    7233

    瀏覽量

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

    關(guān)注

    1

    文章

    212

    瀏覽量

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

    關(guān)注

    30

    文章

    4882

    瀏覽量

    70047

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

    常用幾種狀態(tài)機(jī)

    常用幾種狀態(tài)機(jī)
    發(fā)表于 04-02 06:05

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

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

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

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

    常用幾種充電電池基本常識(shí)

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

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

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

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

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

    幾種分析電路的常用方法

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

    幾種常用單片機(jī)介紹

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

    深度剖析基于Python中的Mock

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

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

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

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

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

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

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

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

    在面向?qū)ο蟪绦蛟O(shè)計(jì)中,模擬對(duì)象(英語(yǔ):mock object,也譯作模仿對(duì)象)是以可控的方式模擬真實(shí)對(duì)象行為的假的對(duì)象。程序員通常創(chuàng)造模擬對(duì)象來(lái)測(cè)試其他對(duì)象的行為,很類似汽車設(shè)計(jì)者使用碰撞測(cè)試假人來(lái)模擬車輛碰撞中人的動(dòng)態(tài)行為。
    的頭像 發(fā)表于 04-28 17:50 ?1880次閱讀
    三種<b class='flag-5'>Mock</b>測(cè)試<b class='flag-5'>方案</b>的應(yīng)用與實(shí)踐總結(jié)