最近在做可视化图表 G2Plot 的性能测试和优化,第一步就是 mock 指定结构的数据,一般大家都用 mockjs,但是我看了 API 和语法,感觉有点黑了,不好用,于是自己造了一个轮子( miz ),感觉代码写的还不错,分享给大家!
举例子,生成一个长度为 2 的用户信息。(使用方法类似于 react 的 prop-types )
import { M } from 'miz';
const m = M.arrayOf(M.shape({
id: M.number(10000, 1000000), // id is between 10000 ~ 1000000.
name: M.string(6), // 6 length random string.
sex: M.bool(), // random true or false.
city: 'hz', // constant value.
work: M.oneOf(['QA', 'FED']) // random from array
}), 2); // list length is 2.
m.mock();
Then will get the mock variable like below:
[{
id: 757852,
name: 'mU7RTB',
sex: false,
city: 'hz',
work: 'FED'
}, {
id: 359987,
name: 'jWuKxX',
sex: true,
city: 'hz',
work: 'FED'
}]
如果觉得好用,不吝点个 star ^_^
1
no1xsyzy 2021-02-04 11:56:51 +08:00
假数据不是 mock 而是 dummy data 或者 fake data 。mock 是指假调用
搜索了一下,比如 npm i fake-data-generator 这个,其实很像,不过是写 json 配置的 |
2
no1xsyzy 2021-02-04 12:04:04 +08:00
看了一下,其实你连 mockjs 的 Get Started 示例都不能用正常方法做出来吧
怎么做一个自增键? |
4
THP301 2021-02-04 16:09:43 +08:00
mock 形容词: 虚假, 虚设, 义
mock 假数据 = 虚假的假数据 = 真数据 ? |
8
YouLMAO 2021-02-05 01:13:41 +08:00 via Android
大部分的测试都是确定性的,不是随机数据也不是自增数据
|
9
YouLMAO 2021-02-05 01:15:08 +08:00 via Android
要先有需求再做产品
|
10
no1xsyzy 2021-02-05 13:33:18 +08:00
@YouLMAO 自增是确定性的。
一般只跑一次之后就用同一个数据集了。你总不见得拿线上数据测试,或者手撸假数据。 @50vip 所以说还是外部变量,而且起始点还不受控 好,那么来个这个:一个列表,每个元素是章节序号和属于该章节的图片列表、代码块列表 每个图片列表的 ref 应当是 “图 <章节序号>-<该章节内的图片序号>”,代码块列表类似。 用你的库写写看? 你底层抽象彻底错了。操作数据应当使用函数式范式。 https://gist.github.com/no1xsyzy/3cc83e5da3fca783deb74954b915baa0 |
11
YouLMAO 2021-02-05 13:38:00 +08:00
@no1xsyzy 建议你看看 gmock 框架,
自增是确定性的, 但很少场景会用到, 举个例子 代码面试要你测自己程序 testcase 你输入 1,2,3,4 吗, 肯定是-1,0,1,+IntMax 等边界条件咯, 测了 2,就不需要测 3 和 4 了 |
12
no1xsyzy 2021-02-05 13:46:20 +08:00
另外,arrayOf 有个 bug,你没法调最短为 0 的 array 。
M.arrayOf(..., 0, 5) 会产生一个最短为 5 最长为 20 的序列。 |
13
no1xsyzy 2021-02-05 13:53:29 +08:00
|