背景
在开发过程中我们经常会用到mock数据,为了使用mock数据,我们常常需要引入很多额外的工作,比如在本地使用静态json的方式需要我们手动创建很多json文件,再比如现在存在的一些mock服务,也需要我们手动做很多工作。当然繁琐的操作步骤也主要可能是因为我们所要开发的业务涉及的数据比较复杂,那么操作步骤比较多,使用形式比较多样也是合情合理的。不过我们也有很多时候并不需要特别复杂的mock服务,有可能是紧紧在尝试学习一个前端框架或者是在测试一个服务,那么有没有一个简单的mock工具呢?答案是肯定的,seed-mock就是为了解决这个问题而出现的。
安装
npm i -s seed-mock
在使用seed-mock的时候,只需要告诉seed-mock一个mock生成规则的字符串,seed-mock就会按照相应的规则生成你想要的mock数据。举个栗子:
const mock = require('seed-mock');
const seed= 'name:string,count:number,category:array(5)[number],data:object{field_string:string,field_number:number,field_array:array(1)[string],field_null:null,field_undefined:undefined,field_bool_true:bool,field_bool_false:bool!}';
console.log(mock(seed));
当运行以上代码之后,你就会得到
{
"name": "Quinlan Vos",
"count": 576,
"category": [
834,
86,
807,
363,
72
],
"data": {
"field_string": "Durge",
"field_number": 318,
"field_array": [
"Kyp Durron"
],
"field_null": null,
"field_bool_true": true,
"field_bool_false": false
}
}
在上面的代码里变量seed就是生成mock数据的种子表达式,name:string,count:number,category:array(5)[number],data:object{field_string:string,field_number:number,field_array:array(1)[string],field_null:null,field_undefined:undefined,field_bool_true:bool,field_bool_false:bool!},在这串字符中以,隔开的是各个字段的表达式,:左侧的是字段名称,右侧的是类型。由于seed-mock是为了简单应用场景而开发的,所以目前仅仅支持string,number,undefined,null,bool,bool!,array,object8种类型,其中array和object两种为复合类型,其余均为基本类型。
基本类型
string
字符串类型在生成mock的时候使用的是rand-names
number
数字在生成的时候会自动随机生成1-3位数的整数
null
如果类型为null,直接返回null作为mock数据值
bool 和 bool!
bool和bool!两个作为表达式的两个基本类型,分别代表的是javascript中的true和false。
undefined
需要注意的是在JSON输出的时候会自动将function和undefined类型的字段删除,在表达式中提供undefined类型是为了保证mock数据基本类型定义的完整性,并不会输出在结果中,如果觉得没有实际用处,也可以在生成mock数据的时候不传入undefined相应的mock生成规则。
复合类型
object
在使用seed-mock生成数据的过程中,如果需要生成对象类型的数据, 可以使用表达式object{field1:number, field2:string},在解析的过程中最外层开头的object{和末尾的}是可以省略的。在object{和}之间包裹着的是基本类型或者是array类型的子表达式。
array
使用array类型的时候按照array(5)[number]这种形式,其中5是代表数组的长度,[number]代表的是数据里的元素类型。[和]之间包含的部分与object类型中object{和}之间包含的部分类似,区别在于在object中需要给定字段名称,而在array中只需要说明类型,另外目前只允许定义一种类型。
seed-mock主要的目的是为了简化获取mock数据的流程,非常适合测试业务以及小型业务场景。
现在seed-mock提供两种使用方式,除了可以作为npm模块使用之外还可以以命令行方式使用,支持的选项在安装之后可以运行seed-mock -h进行查看,命令行形式对于模拟随机http请求数据有一定的帮助。
使用文档点击seed-mock到github上可以查看, 更多的栗子在test.js中可以找到。
seed-mock本来是为了解决自身开发过程中存在的问题而做的,也希望能够对其他人有所帮助,现在代码放到了github上面。