最近在做可视化图表 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 |