Skip to content

Data Mock Guide

jitwxs edited this page Apr 12, 2022 · 2 revisions

01 API

1.1 TypeKit

EasyMock 借鉴了 fastjson 中的 TypeReference,其用法也和它一致,来实现对集合等复杂类型的支持。

1.2 MockConfig

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);

1.2.1 数值范围配置

通过以下 API 控制不同数值类型的生成数据范围:

  • setByteRange
  • setShortRange
  • setIntRange
  • setLongRange
  • setFloatRange

1.2.2 日期范围配置

通过 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));

1.2.3 数量范围配置

通过 sizeRange 控制生成数据的数量或字符串长度,例如:

  • 数组元素数量

  • List、Set、Map 等集合元素数量

  • 英文、数字字符串的长度

1.2.4 字符串配置

系统支持以下格式的字符串生成,

  • 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));

02 Annotation

2.1 @EasyMockIgnore

对于自定义对象,通过该注解来忽略该字段的数据 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());
}