分享一个简单强大的生成测试数据的工具

2015-04-28 07:40:01 +08:00
 qiu8310

项目地址

源码地址

在线演示

背景

用 yod-mock 解决

使用它非常简单

可以看个 DEOM

// 定义一个用户类型
yod.type('User', {
  firstName: '@First',
  myFirstNameLength: '@Self.firstName.length',
  lastName: '@Last',
  '@Self.lastName': 'is my family name',
  fullName: '@Self.firstName @Self.lastName',
  nickName: '@Nick',
  chineseName: '@ChineseName',
  age: '@Age(adult)',
  to100: '` 100 - @Self.age `',
  telephone: '@Tel',
  avatar: '@Avatar',
  others: {
     words: 'My name is @Parent.fullName,  call me @Parent.nickName.',
     bestFriends: '@Nick.repeat(2, 3).join(", ")',
     favouriteLetter: '@([A, B, C]).sample'
  }
});

// 重复生成 2 - 4 个用户
console.log(yod('@User.repeat(2, 4)'));

它会用你定义的 User 结构体去生成一个数组,包含 2-4 个 User

你可以在线查看或修改上面的 DEMO

yod-mock 的主要特点

7072 次点击
所在节点    Node.js
24 条回复
endoffight
2015-04-28 07:42:16 +08:00
下次前端再催我,我就给他看这个
qiu8310
2015-04-28 10:48:33 +08:00
@endoffight 哈哈,赞。不过记得要先由后台确认好数据的结构。
kepenj
2015-04-28 12:17:47 +08:00
下次后端在没有,我就给他看这个
lincanbin
2015-04-28 12:26:11 +08:00
以前我就是这样的,先放一些假数据给前端用着先——直接按照文档放数据上去。
另外node.js作为后端,在国内并不多见。
Mcatt
2015-04-28 12:48:47 +08:00
好东西,下次试用一下
qiu8310
2015-04-28 13:20:41 +08:00
@lincanbin 嗯,是的,这是个问题。

不过此版本是支持游览器上直接 Mock 数据的,不需要后台,如果用 jquery 可以用它自带的 ajaxBefore 劫持请求,生成 mock 数据。

另外,我是有计划写个后端的网站程序来支持此工具。
Nick
2015-04-28 13:45:06 +08:00
躺着被@
whwei
2015-04-28 13:51:19 +08:00
写过一个响应指定数据的服务器,正好缺这样一个工具产生 mock 数据,感觉 LZ 这个比 mockjs 简单直接好多。。已 star。
qiu8310
2015-04-28 14:21:54 +08:00
@whwei 我就是用 mockjs 不爽才想到自己写一个的。 你的的响应指定数据的服务器是 open sourced 的吗?
qiu8310
2015-04-28 14:22:53 +08:00
@Nick 哈哈。。。说明你更应该用它
fising
2015-04-28 14:25:01 +08:00
Fiddler 不就行了么
zlexdl
2015-04-28 14:44:25 +08:00
看样子挺好的,暂时用不上,给你一个星,留着以后用。
whwei
2015-04-28 14:50:09 +08:00
@qiu8310 是,其实就是一个 express 写的服务器,因为就自己用用,文档什么都还没写。https://github.com/whwei/mockserver
thisnull
2015-04-28 23:55:48 +08:00
正好需要这个.
qiu8310
2015-04-29 07:29:49 +08:00
@whwei 谢谢,可以参考下。 我后期打算做个类似的服务端放到 heroku 或 bae 上给普通用户用,这样他们可以直接 ajax 请求远程服务,就不用在本地 mock 了。

不过最近太忙了,不知道什么时候可以腾出时间来做。
qiu8310
2015-04-29 07:32:06 +08:00
@fising fiddler 还是需要你手动定义好替换文件吧,它的文件内容只有你改动才会变化。

用 yod-mock 生成的内容都是随机变化的,而且接近真实数据(我是爬了一些论坛的数据)。
qiu8310
2015-05-01 08:00:06 +08:00
更新了一个版本,添加了测试,并且修复了上一个版本中的一些很明显的问题!
UG1u8zhQxhvqXNrk
2015-06-03 23:35:15 +08:00
yod.type('User', {
firstName: '@First',
lastName: '@Last',
sex: '@Sex',
fullName: '@Self.firstName @Self.lastName',
nickName: '@Nick',
chineseName: '@ChineseName',
age: '@Age(adult)',
to100: '` 100 - @Self.age `', // 执行 JS 语句
telephone: '@Tel',
avatar: '@Avatar',
others: {
words: 'Hello, my name is @Parent.fullName, you can call me @Parent.nickName.',
bestFriends: '@Nick.repeat(2, 3).join(", ")',
myFirstNameLength: '@Parent.firstName.length',
favouriteLetter: '@([A, B, C]).sample',
nc:{nike:['@Nick']}
}
});

@qiu8310 处理这样的结构 nc:{nike:['@Nick']} 会出问题,不知道什么情况
qiu8310
2015-06-05 16:55:24 +08:00
@burgleaf 我测试没有问题,你复制到 [http://qiu8310.github.io/yod-mock/](http://qiu8310.github.io/yod-mock/) 这里看下
qiu8310
2015-06-05 16:56:18 +08:00
@burgleaf url 写错了,以为它用了 markdown,重发一下地址: http://qiu8310.github.io/yod-mock/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186871

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX