色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

幾種常用的mock方案

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

前言

工具好不好用,關鍵在于用。

肯定有很多前端程序猿聯調前很悠閑,但聯調階段持續加班,直到提測、上線。

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

背景

在開發環境中,由于后端與前端并行開發、或者前端需要等待后臺接口開發。接口直接嚴重依賴,生成數據的業務邏輯復雜等,嚴重影響了開發效率。

因此學會使用最適合自己的 Mock 數據的方法就非常重要。

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

六類常用的MOCK方案說明

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

特點:直接在代碼中寫死 Mock 數據,或者請求本地的 JSON 文件
優點:無
缺點:

和其他方案比 Mock 效果不好

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

方案②:接口管理工具

代表:

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

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

swagger[2]

地址:https://swagger.io/

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

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

yapi[4](去哪兒網開發yapi 官網)

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

優缺點(接口管理工具)

優點:

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

有統一的接口管理后臺,查找使用方便。

缺點:

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

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

增加后臺負擔,與其讓后臺處理mock數據相關問題,倒不如加快提供真實接口數據。

方案③:本地 node 服務器

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

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

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

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

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

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

輕而易舉的實現后臺功能

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

服務管理

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

優點:

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

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

增刪改查真實模擬

缺點:

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

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

方案④:請求攔截[MOCKJS]

代表:Mock.js[6]

特點:

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

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

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

地址:http://mockjs.com/

使用格式說明:

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

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

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

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

只傳template,則執行Mock.mock后返回的是``template的實際結果``。

簡單示例展示:

隨機生成顏色

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

隨機生成郵箱

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

隨機生成ip

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

隨機生成區域地址

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"

按規則生成字符串

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

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

生成指定范圍內的數字

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

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

生成隨機的對象數量

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

生成指定數量的數組

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

生成對象數組

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

......

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

語法規范

> 數據模板定義

定義規則:'key|rules': value

屬性值的數據類型可以是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.創建mock.js文件
//正則匹配/notification/count/的接口
Mock.mock(/notification/count/,{
"code":200,
"msg":"success",
"data":{
"count":3
}
})
2.在入口中引入mock即可

其它優化:
在npm script中增加命令并添加mock環境變量,開發環境中用該命令啟動。
在入口文件中使用mock環境變量判斷是否加載mock.js,使mock數據和業務代碼徹底分離。

> 查看和使用random

全局使用

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

局部使用

隨機生成數據

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

還可隨機生成圖片、顏色、地址、網址、自增數等。

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

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

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

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

> Mock.toJSONSchema( template )

把 Mock.js 風格的數據模板template轉換成JSON Schema[11]。

> Mock.setup( settings )

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

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

優缺點(MOCKJS)

優點:

與前端代碼分離

可生成隨機數據

缺點:

數據都是動態生成的假數據,無法真實模擬增刪改查的情況

只支持 ajax,不支持 fetch

方案⑤:抓包工具

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

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

debugger某個url,修改響應數據。

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

右擊url, copy response

在本地新建mock json數據,然后將response粘貼修改

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

優缺點:

優點:mock便于混合開發的問題排查、線上問題排查等。
缺點:調試相對繁瑣。

方案⑥:組合模式

代表:easy-mock(提供在線服務和接口代理,支持mockjs、Swagger、restapi風格)
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//刪除
資源負數名稱表示對應表的資源集合,方法動詞。

其它方案參考

apifox

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

常用解決方案:

使用 Swagger 管理 API 文檔

使用 Postman 調試 API

使用 RAP 等工具 Mock API 數據

使用 JMeter 做 API 自動化測試

jsonplaceholder

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

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

最后

Mock不只是mock數據,還可以mock功能的。我們通過使用Mock盡可能的完善功能,才能在聯調時事半功倍。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7064

    瀏覽量

    89105
  • 前端
    +關注

    關注

    1

    文章

    192

    瀏覽量

    17774
  • 代碼
    +關注

    關注

    30

    文章

    4791

    瀏覽量

    68677

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

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

收藏 人收藏

    評論

    相關推薦

    分享幾種常用的驅動電路

    MOS管因為其導通內阻低,開關速度快,因此被廣泛應用在開關電源上。而用好一個MOS管,其驅動電路的設計就很關鍵。下面分享幾種常用的驅動電路。
    發表于 05-12 15:57 ?3532次閱讀
    分享<b class='flag-5'>幾種</b><b class='flag-5'>常用</b>的驅動電路

    mock數據方法

    #hello,JS:13-02前后端交互+mock數據
    發表于 06-05 16:32

    常用幾種接地方法?

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

    請問幾種常用的網絡協議是什么?

    請問幾種常用的網絡協議是什么?
    發表于 10-27 07:56

    幾種常用高速邏輯電平電路的特點及應用

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

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

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

    幾種常用電阻的結構和特點

    幾種常用電阻的結構和特點 電阻種類
    發表于 11-27 09:54 ?1250次閱讀

    幾種常用電容器的結構和特點簡介

    幾種常用電容器的結構和特點簡介 電容器是電子設備中常用的電子元件,下面對幾種常用電容器的結構和特點作
    發表于 03-31 10:07 ?832次閱讀

    幾種分析電路的常用方法

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

    幾種常用單片機介紹

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

    深度剖析基于Python中的Mock

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

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

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

    Linux內核常用幾種鏡像文件

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

    幾種常用的產生負電源的方法

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

    三種Mock測試方案的應用與實踐總結

    在面向對象程序設計中,模擬對象(英語:mock object,也譯作模仿對象)是以可控的方式模擬真實對象行為的假的對象。程序員通常創造模擬對象來測試其他對象的行為,很類似汽車設計者使用碰撞測試假人來模擬車輛碰撞中人的動態行為。
    的頭像 發表于 04-28 17:50 ?1512次閱讀
    三種<b class='flag-5'>Mock</b>測試<b class='flag-5'>方案</b>的應用與實踐總結
    主站蜘蛛池模板: 野花日本韩国视频免费高清观看 | 亚洲国产成人在线| 久久视频这只精品99re6| 国产高清超清在线播放| 4480YY旧里番在线播放| 亚洲精品视频观看| 色戒西瓜视频| 欧美日韩亚洲一区二区三区在线观看| 韩国黄色影院| 国产成人99久久亚洲综合精品| 最近的2019中文字幕国语HD| 亚洲高清国产拍精品5g| 日日噜噜噜夜夜爽爽狠狠| 麻豆国产精品AV色拍综合| 精品夜夜澡人妻无码AV| 国产精品亚洲专一区二区三区 | 换脸国产AV一区二区三区| 国产 亚洲 中文字幕 久久网| 99久久精品久久久| 在线看片福利无码网址| 亚洲精品123区| 校园高h肉耽文| 少妇系列之白嫩人妻| 秋霞电影伦网理最新在线看片| 美国69xxxx59| 乱叫抽搐流白浆免费视频| 久久精品九九亚洲精品天堂| 好爽好深太大了再快一点| 国产午夜精品一区理论片飘花| 国产传媒麻豆剧精品AV| 国产99网站| 国产成人在线免费观看| 国产精品99久久久久久WWW| 各种肉黄浪荡故事集| 高清不卡伦理电影在线观看| 超碰98人人插| 成人在线视频国产| 俄罗斯XX性幻女18| 国产AV在线传媒麻豆| 国产精品99久久久久久AV| 光溜溜的美女直播软件|