眾多mock工具,這一次我選對了

文章目錄

  • 寫在前面
  • Mock介紹
    • Mock能解決什么問題?
    • 傳統Mock解決方案
    • Postman接口測試工具
    • Mock js第三方庫
  • Eolink解決方案
    • 全局Mock
    • 高級Mock
    • 返回結果Mock
    • 智能內置Mock
    • 智能自定義Mock
    • 約束條件Mock
    • Eolink的Mock解決方案的優勢:
  • 寫在最后

寫在前面

交戰之前,戰士必先利其兵器,作為開發人員的我們更是如此,在日常的開發中如果擁有一款得心應手的工具軟件,一定能夠大大提高我們的工作效率。

在開發過程中,由于后端與前端并行開發,但是作為前端開發工程師的我們,難道在搭建完頁面后只能等待后端的接口么?這樣的話我們則完全被后端開發限制住了。在前面跟大家介紹過 Mock.js 不知道大家有么有看到哈,如果沒有看到的同學,或者不知道mock是什么的小伙伴可以先去看看,其實mock的出現就是前后端分離后為前端不受制于后端同學的束縛而出現的,在實際開發中后端同學有自己的開發節奏,不能如我們前端所想幾分鐘出一個接口,可能我們索要接口的時候后端同學還在構思如何建表?使用開發好的 API 對接,也有可能一個 API 不通就阻塞了整個軟件的對接工作。同時對軟件的敏感度也很高,一不小心就可能導致整個軟件不能正常工作。并且界面之間存在著嚴重的相互依賴關系,產生的業務邏輯非常復雜,這些都會對軟件的開發效率產生很大的影響。

所以學習如何利用最好的 Mock數據是很關鍵的。這樣做會降低前端開發者的工作量,降低開發費用,提高開發效率。下面我們就來看一下常見的Mock方法,我們可以根據具體的場景和條件來進行選擇和配置。最關鍵的是要知道如何去做,并從中挑選出最適合自己的方式。

Mock介紹

或許還有一些沒見過 Mock的讀者,不知道 Mock是什么。今天就來跟你說說這玩意的厲害,這玩意非同凡響!
簡單地說, Mock是指在測試期間,為一些難以構建或不易獲得的對象,創建一個虛擬物體進行測試。而這個虛擬物體就是模擬物體,模擬對象是在調試過程中實際對象的替代。
有時候, Mock服務被稱為一個測試服務替代品,或一個測試服務,下面的圖片非常生動地說明了它的功能。

在這里插入圖片描述

Mock能解決什么問題?

Mock功能的優勢:

前端對接不依賴后端: 讓前端工程師獨立于后端進行開發。
增加測試的真實性: 通過隨機數據,模擬各種場景。
開發無侵入:不需要修改既有代碼,就可以攔截Ajax請求,返回模擬的響應數據。
數據類型豐富:支持生成隨機的文本、數字、布爾值、日期、郵箱、鏈接、圖片、顏色等。
方便擴展: 支持擴展更多數據類型,支持自定義函數和正則。

Mock功能適用場景在實際工作中非常多,真正在實際項目中,引入Mock工具通常來解決如下幾類問題。主要有:

? 開發進行單元測試
因為單元測試只對目前的單元進行,所以必須保證所有的內外依賴關系都是穩定的,使用 mock的方式來模擬基礎單元依賴的其它單元,這樣就可以把測試的重心放在當前單元的功能上,從而消除外部因素的影響,提高測試的準確性。

? 調用第三方接口
在做接口自動化的時候,有時候需要調用第三方的接口,但是別人公司的接口服務穩定性不受你的控制,有可能別人提供的測試環境今天服務給你開著,別人就關掉了,給自動化接口測試帶來很多的麻煩,此時就可以通過mock來模擬接口的返回數據,比如模擬各種第三方異常時的返回。

? 解決接口間的相互依賴
例如,您正在開發前端網頁,現在您需要開發付款功能:下一次訂購、付款頁面界面、付款結果、付款成功、顯示付款成功頁、付款失敗頁。為了實現這個特性,您必須調用后臺界面,并顯示出相應的頁面。現在的后端界面還沒有完全開發出來,如果是前端開發,那就只能加班了。要實現開發工作的同步,在這個時候,您可以按照接口文件的要求,將接口的地址和參數發送給用戶,再通過 mock接口的不同的返回接口,來完成開發工作。

傳統Mock解決方案

傳統Mock解決方案常見的有兩種,一種是使用Postman接口測試工具進行Mock數據,另外一種是使用Mock js第三方庫進行Mock數據。

Postman接口測試工具

Postman中需要點擊Create Mock Server配置mock服務。選擇之后,應用程序會進行一步一步的提示。

在這里插入圖片描述

配置需要mock的接口地址,手動輸入響應數據返回值即可。

在這里插入圖片描述

Mock js第三方庫

Mock.js 是一款模擬數據生成器,旨在幫助前端攻城師獨立于后端進行開發,幫助編寫單元測試。提供了以下模擬功能:

根據數據模板生成模擬數據
模擬 Ajax 請求,生成并返回模擬數據
基于 HTML 模板生成模擬數據

在Mac上打開命令行終端,輸入安裝命令: npm install mockjs,稍等幾分鐘安裝完成。
簡單示例展示:
Mock list是自增數據

// 使用 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))

Mock 按規則生成字符串

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

Postman和Mock js使用小結

Postman: Postman的安裝更容易,但Postman在mock功能中的表現,必須手工填寫mock數據,而且只有一個配置可以寫入。在實際應用中,仍然不夠靈活,擴展性不強。

Mock js:Mock js雖然能mock出很多類型的數據,但是它需要嵌入在前端vue項目中結合使用,上手使用有一定的門檻。

總的來看,傳統Mock解決方案存在幾類問題:

適配復雜場景的Mock能力弱; ? 復雜依賴環境不穩定; ? 會增加代碼量,在寫mock對象代碼時,有可能引入錯誤;
學習成本較高,需要編寫代碼;

綜上問題,我們需要一套開箱即用的Mock工具,能應對復雜的業務場景、穩定并且可靠、對代碼無侵入、上手使用簡單。

在這里插入圖片描述

Eolink解決方案

在介紹Eolink解決方案之前,介紹下Eolink到底是個啥? 能解決什么問題?讓我們先來了解一下。

官方的解釋 : Eolink 能夠提供 API 全生命周期管理解決方案,幫助前端、后端以及測試人員的工作變得更敏捷,包含功能:接口文檔管理、接口自動化測試、接口數據Mock等功能。

這意味著 Eolink將會為我們帶來一種全新的技術解決方案, 接下來給大家介紹強大的mock功能使用。

Eolink的 mock功能非常完善,從一個整體 Mock到一個字段級的 Mock都可以適應不同的情況。我肯定相信大部分人會將其用于每天的應用,例如前后端項目開發,第三方接口的調試,以及接口的自動化測試,幾個小時就能熟練地運用。我將其功能拆解成思維導圖的方式講解,這樣會更清晰易懂。

在這里插入圖片描述

從以上的思維導圖可以分為六個層次的 Mock功能,下面我將通過每個 Mock的業務上的實例來說明功能的特點,具體的 Mock的用法,還有一些具體的調試和優化。

全局Mock

特點: 提供系統兜底的Mock規則,確保每個Mock調用的返回參數均有隨機數據。

全局Mock是Eolink提供的最兜底或者最保守的一種Mock功能,主要是為了方便那些不想要附加 Mock的同學,提供一些簡單的Mock功能。

首先,需要編輯頁面的返回結果設置city字段。

在這里插入圖片描述

然后在文檔底部Mock模塊選擇系統默認期望鏈接并且點擊復制到瀏覽器中。

在這里插入圖片描述

每次刷新瀏覽器,都會name字段都會返回隨機字符串,達到了每個Mock調用的返回參數均有隨機數據的效果。

在這里插入圖片描述

高級Mock

特點:配置不同的請求參數,以獲得不同的返回數據。靈活全面的自定義配置,一個接口實現多種返回數據。

比如請求參數的類型name字段參數值是1、2、3,但是需要返回的結果返回不同的響應結果。在實際項目中,為了降低前端配置Mock接口,可以通過一個接口實現配置不同的請求參數,獲取不同的返回數據。

可是使用動態Javascript通過代碼生成返回數據時,JavaScript是一種支持面向對象編程、命令式編程和函數式編程的網頁開發客戶端腳本語言,可以使用編寫 Javascript 代碼的方式,并使用 return 語句返回數據,而且這種方式最容易處理數據,本文中使用的就是這種方式。Javascript模式中也支持 Mock JS,通過 Mock.mock() 方式調用,詳情可以查閱 Mock JS 官方文檔。

在這里插入圖片描述

通過編寫Javascript腳本設置響應內容,還可以直接使用內置函數設置“請求體觸發條件”相關內容,
設置的信息等同于在“請求體觸發條件”輸入框中的設置,如設置Header參數或者請求體參數等,
設置完成后,在測試時填寫對應的參數進行觸發。

示例:設置請求體參數,對觸發條件進行判斷輸出符合條件的數值判斷觸發條件“a”是否等于“eo_test”若等于則輸出“成功”,否則輸出“失敗”。

在這里插入圖片描述

在請求參數中輸入status=1后,可以看出結果是code=1,這樣就是根據輸入條件動態mock返回數據的效果。當然,在“數據輸出”中,我們可以添加代碼,對數據的合理性進行檢查,以確保數據的合理可信。

在這里插入圖片描述

返回結果Mock

特點:編輯接口文檔的返回結果的同時完成Mock規則配置。邊寫文檔邊完成Mock配置,無需額外工作量。

在Mock規則區域,可直接在Mock規則輸入框中填寫固定值,Mock API調用時直接返回其固定值。

在這里插入圖片描述

智能內置Mock

特點:智能識別常用返回參數,自動填入預置Mock規則。零配置,無形中完成Mock規則填寫。

系統已內置一套常用的智能Mock規則,你無需做任何配置,在文檔中編寫對應的字段名則會出現對應的Mock規則。實現Mock API零配置,無形中完成Mock規則填寫。

比如: 字段名輸入time,Mock規則會自動識別匹配出內置Mock規則,@datetime(‘yyyy-MM-dd HH:mm:ss’)這種Mock規則,用戶在使用過程中,使用效果無感知、不需要額外配置。

在這里插入圖片描述

智能自定義Mock

特點:智能識別特殊返回參數,自動化填充自定義Mock規則。一次配置多次復用,提升Mock規則邊寫效率。

你可以通過智能自定義Mock配置,使得你在文檔中編寫某個字段名后,系統自動填入對應的Mock規則。實現字段Mock規則一次配置,永久復用。大大提高了工作效率,讓您在工作中游刃有余。

把Mock規則和字段名的匹配規則預先自定義好,然后后續可以在實際使用的時候,填寫對應的字段名可以輸出對應的Mock規則。
比如
@ctitle: 隨機生成一句中文標題。
@cword: 隨機中文詞組。
@datetime: 日期時間。

在這里插入圖片描述

約束條件Mock

特點:根據字段約束條件自動生成對應的Mock數據。字段級多條件配置,還原最真實的隨機數據。

對返回參數字段進行約束條件設置后,Mock規則輸入框會自動填入占位符@eo.limit 并自動根據約束條件返回Mock數據。

在這里插入圖片描述

在操作區域內點擊更多設置,如字段長度,最大值最小值,和值可能性等。

在這里插入圖片描述

Eolink的Mock解決方案的優勢:

能適配各種場景的Mock能力強;
學習成本低,不需要額外編寫代碼;
mock能力更加智能,實現零配置;
mock服務和應用服務彼此分離,不會存在代碼污染;

寫在最后

Eolink在Mock方面表現的很強大,適用于不同的業務場景、適用于不同的使用人群,通過以上兩種簡單和高級的調用,不同之處是簡單的 Mock配置簡單,而高級 Mock是基于簡單 Mock的增強,可以適應更加復雜的情況,結合多種智能配置方式搭建的Mock API 能力體系,滿足了大部分用戶對Mock能力的需求。

看到這里是不是感覺到我們前端再也不用卑微的去懇求接口了,是不是我們在某種程度上拜托了后端的限制了呢,自己模擬數據進行后續前端的工作。趕快來嘗試我們這款強大的 Eolink 吧!體驗鏈接:https://www.eolink.com

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

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

相關文章

高并發的理解和使用場景-----特意區別和多線程的關系

一,高并發的理解 1.概念:就是短時間內遇到大量操作請求,導致站點服務器/db服務器資源被占滿甚至嚴重時直接導致宕 2.影響:沒有做高并發預處理的系統會給用戶很差的體驗感; 3.系統好壞的衡量:衡量一個系統的…

async 和 await 原來這么簡單

前言 前端同學們可能都知道 async 和 await 的使用,當被面試官問到 async 和 await 的是什么?或者說一說你對 async、await 的理解?如果我們還是僅僅去闡述我是如何使用的就顯得格外的蒼白無力。今天博主就來帶大家進一步認識我們的 async 和…

研一寒假02-指針_new分配內存_使用new來創建動態數組_使用動態數組_使用delete來釋放new分配的內存...

#---------------------------------指針-----------------------------------# #include <iostream> int main(){ using namespace std; /* 指針引入 */ int updates 6; //聲明一個變量 int* p_updates; //聲明一個指針p_updates,該指針指向一個地址 p_updates&upd…

利用Windows內置工具winsat測試硬盤速度(SSD機械盤對比)

利用Windows內置工具winsat測試硬盤速度&#xff08;SSD&機械盤對比&#xff09; 以下是紅色內容是在命令行運行&#xff1a; C:\Users\Administrator>winsat diskWindows 系統評估工具> 正在運行: 功能枚舉 > 運行時間 00:00:00.00> 正在運行: 存儲評估 -seq …

我為何在 CSDN 樂在其中

文章目錄寫在前面成為博主究竟能得到什么&#xff1f;內在提升耀眼名片豐富眼界提升知名度博客》變現寫在最后寫在前面 各位伙伴大家好&#xff0c;我是幾何心涼&#xff0c;一位不是很大的也不是很小的博主&#xff0c;今天想要跟大家去聊一些比較實在的內容&#xff1b;大家能…

EFLinq查詢

1、無參數查詢var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2、有參查詢var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes where idID ",new SqlParameter("ID",id)).ToL…

實現div可以調整高度(div實現resize)

實現div可以調整高度&#xff08;div實現resize&#xff09; 一、div 實現resize&#xff08;類似textarea&#xff09; 代碼如下&#xff1a; <!DOCTYPE html> <html><head><title>div實現textarea效果</title><style>#textarea {height:…

10分鐘設置免費遠程桌面

文章目錄前言遠程桌面設置教程啟動Amazon Lightsail實例配置遠程桌面啟動遠程桌面使用遠程桌面前言 “你見過洛杉磯凌晨4點的樣子嗎&#xff1f;” 沒有也沒關系&#xff0c;你可以輕松配置一臺位于洛杉磯的免費遠程桌面。 利用Amazon全球可用區&#xff0c;甚至可以在世界各…

樹莓派-開啟spi

1. sudo raspi-config #進入樹莓派配置頁 2. #進入每5項&#xff0c;進入啟用spi即可 轉載于:https://www.cnblogs.com/lobin/p/10459076.html

Lucene全文檢索過程

1. 索引過程&#xff1a; 1) 有一系列被索引文件 2) 被索引文件經過語法分析和語言處理形成一系列詞(Term)。 3) 經過索引創建形成詞典和反向索引表。 4) 通過索引存儲將索引寫入硬盤。 2. 搜索過程&#xff1a; 1) 用戶輸入查詢語句。 2) 對查詢語句經過語法分析和語言分析得到…

tcpdump 用法

原文鏈接 本文原文來自&#xff1a; A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic TCPDUMP 簡介 TCPDUMP 在一個界面中既提供了強大的功能又簡單易用&#xff0c;無疑已經是網絡分析工具中的老大。 本教程將介紹如何以各種方式隔離流量&#xff1a;從IP&am…

網絡端

1.synchronized 同步鎖 同步方法: 成員|靜態 簡單,但是鎖的范圍一般可能較大,效率低 同步塊 類的class:相當于鎖了類的整個信息|所有對象 this:鎖當前對象,鎖了這個對象的所有資源 資源:一般鎖不變的內容--對象地址 鎖的范圍太大效率低,鎖的范圍太小可能鎖不住 鎖一定要鎖不變的…

BZOJ2690: 字符串游戲(平衡樹動態維護Dfs序)

Description 給定N個僅有a~z組成的字符串ai,每個字符串都有一個權值vi,有M次操作&#xff0c;操作分三種&#xff1a;Cv x v:把第x個字符串的權值修改為vCs x a:把第x個字符串修改成aQ:求出當前的最大權字符串集合&#xff0c;使得這個集合中的字符串經過重新排列后滿足除最后一…

【第一趴】初探uni-app(uni-app發行者、uni-app推出背景、為什么選擇uni-app)

文章目錄寫在前面DCloud當下跨平臺開發存在的問題為什么選擇uni-app寫在最后寫在前面 聚沙成塔——每天進步一點點&#xff0c;大家好我是幾何心涼&#xff0c;不難發現越來越多的前端招聘JD中都加入了uni-app 這一項&#xff0c;它也已經成為前端開發者不可或缺的一項技能了&…

Rocket - tilelink - Atomics

https://mp.weixin.qq.com/s/TSwKL_qm-b-0e8x7r--hhg 簡單介紹Atomics中數學運算、邏輯運算的實現。??1. ioAtomics是一個硬件模塊&#xff0c;他繼承自Modules&#xff1a;??IO端口定義如下&#xff1a;??其中&#xff1a;a. write: 是否寫操作&#xff1b;b. a&#xf…

Spark streaming java代碼

待做轉載于:https://www.cnblogs.com/drjava/p/10464388.html

【第二趴】uni-app開發工具(手把手帶你安裝HBuilderX、搭建第一個多端項目初體驗)

文章目錄 寫在前面HBuilderXHBuilderX 優勢HBuilderX 安裝uni-app 初體驗寫在最后寫在前面 聚沙成塔——每天進步一點點,大家好我是幾何心涼,不難發現越來越多的前端招聘JD中都加入了uni-app 這一項,它也已經成為前端開發者不可或缺的一項技能了,所以涼哥為大家推出 聚沙成…

“勤學會”火爆來襲

文章目錄勤學會是什么&#xff1f;勤學會存在的意義是什么強大的助學團勤學會如何幫助大家學習參與勤學會能得什么獎品專屬C計劃加入勤學會勤學會是什么&#xff1f; 他來了他來了&#xff0c;其實兩個月前勤學會的概念產品就已經出現了&#xff0c;只不過因為了 1024 大型活動…

LeetCode -- 204. Count Primes

題目標簽 HashTab&#xff08;哈希表&#xff09; 題意及思路 題意&#xff1a;略 思路&#xff1a;有關素數的題目我所知道有兩種做法。一種是最基本的isPrime算法&#xff0c;關鍵點在循環判斷時&#xff0c;上限為Math.sqrt(n) &#xff08;求n是否為素數&#xff09;。另外…

如何尋找無序數組中的第K大元素?

如何尋找無序數組中的第K大元素&#xff1f; 有這樣一個算法題&#xff1a;有一個無序數組&#xff0c;要求找出數組中的第K大元素。比如給定的無序數組如下所示&#xff1a; 如果k6&#xff0c;也就是要尋找第6大的元素&#xff0c;很顯然&#xff0c;數組中第一大元素是24&am…