Mock 的學習之路(一)

安裝Mock

npm install mockjs

語法規(guī)范

數(shù)據(jù)模板

數(shù)據(jù)模板中的每個屬性由 3 部分構成:屬性名油啤、生成規(guī)則蜻展、屬性值:
生成規(guī)則 有 7 種格式:

'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

  1. 屬性值是字符串 String

'name|min-max': string //通過重復 string 生成一個字符串猎莲,重復次數(shù)大于等于 min浅悉,小于等于 max辅肾。
'name|count': string //通過重復 string 生成一個字符串锻拘,重復次數(shù)等于 count。

  1. 屬性值是數(shù)字 Number

'name|+1': number //屬性值自動加 1下愈,初始值為 number纽绍。
'name|min-max': number //生成一個大于等于 min、小于等于 max 的整數(shù)驰唬,屬性值 number 只是用來確定類型顶岸。
'name|min-max.dmin-dmax': number //生成一個浮點數(shù),整數(shù)部分大于等于 min叫编、小于等于 max辖佣,小數(shù)部分保留 dmin 到 dmax 位。

  1. 屬性值是布爾型 Boolean

'name|1': boolean //隨機生成一個布爾值搓逾,值為 true 的概率是 1/2卷谈,值為 false 的概率同樣是 1/2。
'name|min-max': value //隨機生成一個布爾值霞篡,值為 value 的概率是 min / (min + max)世蔗,值為 !value 的概率是 max / (min + max)端逼。

4.屬性值是對象 Object

'name|count': object //從屬性值 object 中隨機選取 count 個屬性。
'name|min-max': object //從屬性值 object 中隨機選取 min 到 max 個屬性污淋。

5.屬性值是數(shù)組 Array

'name|1': array //從屬性值 array 中隨機選取 1 個元素顶滩,作為最終值。
'name|+1': array //屬性值 array 中順序選取 1 個元素寸爆,作為最終值
'name|min-max': array //同String
'name|count': array //同String

6.屬性值是函數(shù) Function

'name': function //執(zhí)行函數(shù) function礁鲁,取其返回值作為最終的屬性值,
7.屬性值是正則表達式 RegExp
'name': regexp //根據(jù)正則表達式 regexp 反向生成可以匹配它的字符串赁豆。用于生成自定義格式的字符串仅醇。

數(shù)據(jù)占位符定義

占位符 的格式為:

@占位符
@占位符(參數(shù) [, 參數(shù)])

注意:
占位符 引用的是 Mock.Random 中的方法。
通過 Mock.Random.extend() 來擴展自定義占位符魔种。
占位符 也可以引用 數(shù)據(jù)模板 中的屬性析二。
占位符 會優(yōu)先引用 數(shù)據(jù)模板 中的屬性。
占位符 支持 相對路徑 和 絕對路徑节预。

如何使用Mock

Mock.mock()

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

//api.js
function  ***(data={},fn){
var res = Mock.mock({
      'error_code': '',
      'error_msg': '',
      'data|10': [{
        'id|+1': 1,
        'name': "@cname()",
        'title': "@csentence(15,26)",
        'date': Random.date('MM-dd'),
        'type|1-4': 1,//事件類型 
      }]
    })
    // 輸出結果
    // console.log(JSON.stringify(res, null, 2))
    fn(res);
}
//某個組件
var API = require('../../utils/api.js');
API.****('', function (res) {
      //這里既可以獲取模擬的res
      console.log(res)
      that.setData({
        list: res.data
      })
    });

Mock.mock( rurl, template )

這種是直接對你請求的的真實url進行攔截,平時怎么請求后臺數(shù)據(jù)現(xiàn)在依然怎么請求

Mock.mock( rurl, function( options ) )

記錄用于生成響應數(shù)據(jù)的函數(shù)叶摄。當攔截到匹配 rurl 的 Ajax 請求時,函數(shù) function(options) 將被執(zhí)行心铃,并把執(zhí)行結果作為響應數(shù)據(jù)返回准谚。
主要用于當你請求的數(shù)據(jù)要根據(jù)傳遞參數(shù)值發(fā)生變化時使用

Mock.mock( rurl, rtype, template )

記錄數(shù)據(jù)模板。當攔截到匹配 rurl 和 rtype 的 Ajax 請求時去扣,將根據(jù)數(shù)據(jù)模板 template 生成模擬數(shù)據(jù),并作為響應數(shù)據(jù)返回樊破。

Mock.mock( rurl, rtype, function( options ) )

記錄用于生成響應數(shù)據(jù)的函數(shù)愉棱。當攔截到匹配 rurl 和 rtype 的 Ajax 請求時,函數(shù) function(options) 將被執(zhí)行哲戚,并把執(zhí)行結果作為響應數(shù)據(jù)返回奔滑。

注意:options 指向本次請求的 Ajax 選項集,含有 url顺少、type 和 body 三個屬性

學習到這里朋其,你所掌握的Mock知識應該就夠你使用了。下面介紹一些不常用到的工具

Mock工具類

Mock.setup( settings )

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

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

Mock.Random(是一個工具類,用于生成各種隨機數(shù)據(jù)秒裕。)

Mock.Random 提供的完整方法袱蚓。比如:Address、Web几蜻、Name喇潘、Text体斩、Color
擴展方法:@擴展方法

Random.extend({
    constellation: function(date) {
        var constellations = ['白羊座', '金牛座', '雙子座', '巨蟹座', '獅子座', '處女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '雙魚座']
        return this.pick(constellations)
    }
})
Random.constellation()
// => "水瓶座"
Mock.mock('@CONSTELLATION')
// => "天蝎座"
Mock.mock({
    constellation: '@CONSTELLATION'
})
// => { constellation: "射手座" }

Mock.valid()

校驗真實數(shù)據(jù) data 是否與數(shù)據(jù)模板 template 匹配

var template = {
    name: 'value1'
}
var data = {
    name: 'value2'
}
Mock.valid(template, data)

Mock.toJSONSchema()

把 Mock.js 風格的數(shù)據(jù)模板 template 轉換成 JSON Schema

百度百科:jsonschema是描述你的JSON數(shù)據(jù)格式颖低;JSON模式(應用程序/模式+ JSON)有多種用途絮吵,其中之一就是實例驗證。驗證過程可以是交互式或非交互式的忱屑。例如源武,應用程序可以使用JSON模式來構建用戶界面使互動的內(nèi)容生成除了用戶輸入檢查或驗證各種來源獲取的數(shù)據(jù)。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末想幻,一起剝皮案震驚了整個濱河市粱栖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脏毯,老刑警劉巖闹究,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異食店,居然都是意外死亡渣淤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門吉嫩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來价认,“玉大人,你說我怎么就攤上這事自娩∮貌龋” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵忙迁,是天一觀的道長脐彩。 經(jīng)常有香客問我,道長姊扔,這世上最難降的妖魔是什么惠奸? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮恰梢,結果婚禮上佛南,老公的妹妹穿的比我還像新娘。我一直安慰自己嵌言,他們只是感情好嗅回,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呀页,像睡著了一般妈拌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天尘分,我揣著相機與錄音猜惋,去河邊找鬼。 笑死培愁,一個胖子當著我的面吹牛著摔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播定续,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼谍咆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了私股?” 一聲冷哼從身側響起摹察,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倡鲸,沒想到半個月后供嚎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡峭状,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年克滴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片优床。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡劝赔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胆敞,到底是詐尸還是另有隱情着帽,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布竿秆,位于F島的核電站启摄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幽钢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一傅是、第九天 我趴在偏房一處隱蔽的房頂上張望匪燕。 院中可真熱鬧,春花似錦喧笔、人聲如沸帽驯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尼变。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫌术,已是汗流浹背哀澈。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留度气,地道東北人割按。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像磷籍,于是被迫代替她去往敵國和親适荣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理院领,服務發(fā)現(xiàn)弛矛,斷路器,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 學習目的 ①開發(fā)時比然,后端還沒完成數(shù)據(jù)輸出丈氓,前端只好寫靜態(tài)模擬數(shù)據(jù)。數(shù)據(jù)牽制與后端谈秫,前端頁面無法很好的展示扒寄,...
    _1633_閱讀 4,565評論 0 24
  • 簡介:如何構建 Web 前端 Mock Server 前后端分離真實數(shù)據(jù)模擬接口測試 前后端分離讓前端攻城師獨立于...
    神刀閱讀 1,060評論 0 0
  • 尊重差異,感激多樣性拟烫、然后该编,培養(yǎng)自己,從報仇硕淑,到妥協(xié)课竣,到合作、最后置媳,找到共享的目標于樟,通過創(chuàng)造性的合作,發(fā)現(xiàn)“天啊...
    C位人生閱讀 147評論 0 0
  • 中午正在午休路捧,盼盼微信發(fā)來頗為沮喪的三個字,“心好累”传黄。 盼盼是我的高中同學杰扫,她的性格懦弱,說話的聲音總是低低的膘掰,...
    婉君不走瓊瑤風閱讀 843評論 0 3