# Mock.Dotnet **Repository Path**: wenjq/Mock.Dotnet ## Basic Information - **Project Name**: Mock.Dotnet - **Description**: 基于mock.js规则生成mock数据 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2020-03-14 - **Last Updated**: 2023-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MockNetCore #### 介绍 类似与mock.js,用于后台按照模版规则生成mock数据。代码迁移自mockj(https://gitee.com/kkk001/mockj) 感谢作者贡献。mockj为java版本mockjs的实现,本项目由mockj项目迁移到dotnet core,但未迁移生成对象的功能。 ### 使用规则 ``` '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 生成一个字符串,重复次数大于等于 min,小于等于 max 'name|count': string //通过重复 string 生成一个字符串,重复次数等于 count ``` 2. Number ``` 'name|+1': number //属性值自动加 1,初始值为 number 'name|min-max': number //生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型 'name|min-max.dmin-dmax': number //生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。 ``` 3. Boolean ``` 'name|1': boolean //随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。 ``` 4. Object ``` 'name|count': object //从属性值 object 中随机选取 count 个属性 'name|min-max': object //从属性值 object 中随机选取 min 到 max 个属性。 ``` 5. Array ``` 'name|1': array //从属性值 array 中随机选取 1 个元素,作为最终值。 'name|+1': array //从属性值 array 中顺序选取 1 个元素,作为最终值。 'name|min-max': array //通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。 ''name|count': array' //通过重复属性值 array 生成一个新数组,重复次数为 count。 ``` ### 占位符函数 调用方式,模版中使用字符串定义 '@函数名称及参数',如: ``` { "email":"@email()", "name":"@cname()", "age":"@integer(1,100)" } ``` 1. 汉字 ``` @cword() //随机几个中文字符 @cword(max) //随机最大长度为max的中文字符 @cword(min,max) //随机长度为min-max的中文字符 ``` 2. 日期 ``` @now() //当前日期时间,格式为yyyy-MM-dd HH:mm:ss(默认格式) @now(fmt) //当前日期时间 fmt为日期格式 @date() //随机一个1970-01-01到2099-01-01的日期时间 @date(fmt) //随机指定格式的日期时间 @date(fmt,max) //随机指定格式,小于等于max的日期时间 @date(fmt,min,max) //随机指定格式和范围的日期时间 @drange() //返回范围1970-01-01到2099-12-31 步进1年的日期字符串数组 @drange(stop) //返回范围1970-01-01到-stop 步进1年的日期字符串数组 @drange(start,stop) //返回范围start-stop 步进1年的日期字符串数组 @drange(start,stop,step) //返回范围start-stop 步进step年的日期字符串数组 @drange(start,stop,step,type) //返回范围start-stop 步进step+type的日期字符串数组,type可以为yyyy,MM,dd,HH,mm,ss @drange(start,stop,step,type,fmt) //返回范围start-stop 步进step+type,最终格式化为fmt的日期字符串数组 ``` 3. 姓名 ``` @first() //随机英文名字 @last() //随机英文姓氏 @name() //随机英文全名 @cfirst() //随机中文名字 @clast() //随机中文姓氏 @cname() //随机中文全名 ``` 4. 数字 ``` @integer() //随机整数 @integer(max) //随机小于等于max的整数 @integer(min,max) //随机范围min到max的整数 @natural() //随机自然数 @natural(max) //随机小于等于max的自然数 @natural(min,max) //随机范围min到max的自然数 @float() //随机浮点数(小数默认1-9位) @float(max) //随机小于等于max的浮点数 @float(min,max) //随机范围在min-max的浮点数 @float(min,max,dmax) //随机范围在min-max,小数位小于等于dmax的浮点数 @float(min,max,dmin,dmax)//随机范围在min-max,小数位dmin-dmax位的浮点数 @range() //返回范围0-0 步进1的数组 @range(stop) //返回范围0-stop 步进1的数组 @range(start,stop) //返回范围start-stop 步进1的数组 @range(start,stop,step) //返回范围start-stop 步进step的数组 ``` 5. 布尔值 ``` @boolean() //随机布尔值 ``` 6. 字符 ``` @character() //随机一位字符 @character(temp) //在temp中随机选取一位字符 @string() //随机1-30位字符 @string(max) //随机小于等于max位字符 @string(min,max) //随机长度min-max位字符 @string(min,max,temp) //在temp中随机选取min-max位字符 ``` 7. web相关 ``` @protocol() //随机协议 @tld() //随机顶级域名 @domain() //随机域名 @domain(tld) //随机指定顶级域名的域名 @url() //随机url @url(protocol) //随机指定协议的url @url(protocol,host) //随机指定协议与地址的url ``` 8. 邮箱 ``` @email() //随机email @email(domain) //随机指定域名的email ``` 9. ip地址 ``` @ip() //随机ipv4 ``` 10. 地区 ``` @region() //随机大区 @province() //随机省、直辖市、自治区、特别行政区 @city(bool) //随机市 bool为true时返回带省前缀的市,默认为false @county(bool) //随机县 bool规则同city @zip() //随机邮编 ``` ### 数组类占位符号函数和模版组合使用 例如需要生成一个日期范围内,每一天的Mock数据来进行曲线展示 ``` { "datas|30":[ //表示生成30条数据 "date|+1":"@range(2020-01-01,2020-01-30,1,dd,yyyy-MM-dd)", //表示顺序选取2020-01-01到2020-01-30中的日期 "value":"@integer(1-1000)" ] } ``` ### 相关示例均可在单元测试项目中查看