Appearance
测试辅助包 mas-mock
测试辅助包用于开发测试时,模拟服务接口返回数据,基于 mockjs
实现
用法
引入 mas-mock
包,具体用法如下:
js
import Mock from 'mas-mock'
Mock.mock(/api\/admin\/platform\/account-info\/update/, {
"code": 0,
"data": {},
"msg": "执行成功"
})
关于Mock的具体用法,可以参考Mock.js 官方网站:http://mockjs.com/
Mock.mock() 使用说明
Mock.mock()方法可以拦截Ajax请求,并根据数据模板生成返回模拟数据。方法定义如下:
js
Mock.mock( rurl?, rtype?, template|function( options ) )
共有 5 种参数格式。
Mock.mock( template )
根据数据模板生成模拟数据。
Mock.mock( rurl, template )
记录数据模板。当拦截到匹配 rurl
的 Ajax 请求时,将根据数据模板 template
生成模拟数据,并作为响应数据返回。
Mock.mock( rurl, function( options ) )
记录用于生成响应数据的函数。当拦截到匹配 rurl
的 Ajax 请求时,函数 function(options)
将被执行,并把执行结果作为响应数据返回。
Mock.mock( rurl, rtype, template )
记录数据模板。当拦截到匹配 rurl
和 rtype
的 Ajax 请求时,将根据数据模板 template
生成模拟数据,并作为响应数据返回。
Mock.mock( rurl, rtype, function( options ) )
记录用于生成响应数据的函数。当拦截到匹配 rurl
和 rtype
的 Ajax 请求时,函数 function(options)
将被执行,并把执行结果作为响应数据返回。
参数的含义和默认值
rurl
可选。
表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。例如 /\/domain\/list\.json/
、'/domian/list.json'
。
rtype
可选。
表示需要拦截的 Ajax 请求类型。例如 GET
、POST
、PUT
、DELETE
等。
template
可选。
表示数据模板,可以是对象或字符串。例如 { 'data|1-10':[{}] }
、'@EMAIL'
。
function(options)
可选。
表示用于生成响应数据的函数。
options
指向本次请求的 Ajax 选项集,含有 url
、type
和 body
三个属性,参见 XMLHttpRequest 规范。
从 1.0 开始,Mock.js 通过覆盖和模拟原生 XMLHttpRequest 的行为来拦截 Ajax 请求,不再依赖于第三方 Ajax 工具库(例如 jQuery、Zepto 等)。
Mock.Random() 方法使用
Mock.Random 是一个工具类,用于生成各种随机数据。
Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数])
。
js
var Random = Mock.Random
Random.email()
// => "n.clark@miller.io"
Mock.mock('@email')
// => "y.lee@lewis.org"
Mock.mock( { email: '@email' } )
// => { email: "v.lewis@hall.gov" }
方法
Mock.Random 提供的完整方法(占位符)如下:
类型 | 方法/占位符 |
---|---|
基础 | boolean, natural, integer, float, character, string, range, date, time, datetime, now |
图片 | image, dataImage |
颜色 | color |
文本 | paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle |
姓名 | first, last, name, cfirst, clast, cname |
网络 | url, domain, email, ip, tld |
地址 | area, region |
辅助 | capitalize, upper, lower, pick, shuffle |
其他 | guid, id |
具体用法可参考 Mock.js 官网文档 https://github.com/nuysoft/Mock/wiki/Mock.Random
扩展
Mock.Random 中的方法与数据模板的 @占位符
一一对应,在需要时还可以为 Mock.Random 扩展方法,然后在数据模板中通过 @扩展方法
引用。例如:
js
Random.extend({
constellation: function(date) {
var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']
return this.pick(constellations)
}
})
Random.constellation()
// => "水瓶座"
Mock.mock('@CONSTELLATION')
// => "天蝎座"
Mock.mock({
constellation: '@CONSTELLATION'
})
// => { constellation: "射手座" }
引用其他微服务提供的mock数据
js
import 'mas-core/mock'