-
Notifications
You must be signed in to change notification settings - Fork 2
Data Mock Guide
jitwxs edited this page Apr 12, 2022
·
2 revisions
EasyMock 借鉴了 fastjson 中的 TypeReference
,其用法也和它一致,来实现对集合等复杂类型的支持。
MockConfig 用于您对生成的数据进行一些限制,您可以直接使用 new 的方式构造出实例,然后用链式的 API 进行配置设定。例如:
final MockConfig mockConfig = new MockConfig(); // 创建实例
final MockConfig mockConfig = new MockConfig().setIntRange(1, 5).setLongRange(12, 20); // 链式 API
// 实际使用
final int value = EasyMock.run(int.class, new MockConfig().setIntRange(100, 105));
assertTrue(value >= 100 && value < 105);
通过以下 API 控制不同数值类型的生成数据范围:
- setByteRange
- setShortRange
- setIntRange
- setLongRange
- setFloatRange
通过 setDateRange
控制日期的生成数据范围,传递起始日期的毫秒时间戳:
final MockConfig dateMockConfig = new MockConfig().setDateRange(ldtToMs(startLDT), ldtToMs(endLDT));
final LocalDateTime ldt = EasyMock.run(LocalDateTime.class, dateMockConfig);
assertTrue(ldt.isAfter(startLDT) && ldt.isBefore(endLDT));
final LocalDateTime ldt1 = dateToLdt(EasyMock.run(Date.class, dateMockConfig));
assertTrue(ldt1.isAfter(startLDT) && ldt1.isBefore(endLDT));
通过 sizeRange
控制生成数据的数量或字符串长度,例如:
-
数组元素数量
-
List、Set、Map 等集合元素数量
-
英文、数字字符串的长度
系统支持以下格式的字符串生成,
- UUID
- ENGLISH 英文字符
- NUMBER 数字
- EMAIL 邮箱
- CN_ID_CARD 身份证号
- CN_TEL 手机号
- CN_NAME 姓名
- ENGLISH_NAME 英文名
您可参见 com.github.jitwxs.easydata.common.enums.MockStringEnum 查看最新支持
通过如下 API 即可指定格式:
final String number = EasyMock.run(String.class, new MockConfig().setStringEnum(MockStringEnum.NUMBER));
assertTrue(StringUtils.isNumeric(number));
对于自定义对象,通过该注解来忽略该字段的数据 mock,例如:
@Data
public class IgnoreBean {
@EasyMockIgnore
private String ignore;
private Integer notIgnore;
}
@Test
public void testIgnore() {
final IgnoreBean bean = EasyMock.run(IgnoreBean.class);
assertNotNull(bean);
assertNull(bean.getIgnore());
assertNotNull(bean.getNotIgnore());
}
Author: jitwxs@foxmail.com