diff --git a/README.md b/README.md index 391619727..1edfdcd93 100644 --- a/README.md +++ b/README.md @@ -433,6 +433,39 @@ public void testGenericData() { } ``` +### 模拟HTTP结果包装类 +#### 支持模拟常见的HTTP响应结果包装类,如HttpResult + +```java +//定义一个泛型HTTP结果包装类 +public class HttpResult { + private Integer code; + private String message; + private T data; + //getter setter省略... +} + +@Test +public void testHttpResult() { + // 模拟HttpResult + HttpResult result1 = JMockData.mock(new TypeReference>(){}); + assertNotNull(result1); + assertNotNull(result1.getCode()); + assertNotNull(result1.getMessage()); + assertNotNull(result1.getData()); + + // 模拟HttpResult + HttpResult result2 = JMockData.mock(new TypeReference>(){}); + assertNotNull(result2); + assertNotNull(result2.getData()); + + // 模拟HttpResult> + HttpResult> result3 = JMockData.mock(new TypeReference>>(){}); + assertNotNull(result3); + assertNotNull(result3.getData()); + } +``` + ### 自定义Mocker类注册 ```java diff --git a/pom.xml b/pom.xml index 2bfbf68f9..a35162417 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ org.projectlombok lombok - 1.16.20 + 1.18.30 provided @@ -85,7 +85,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.6.1 + 3.11.0 ${jdk.version} ${jdk.version} @@ -94,12 +94,28 @@ UTF-8 true false + true + + + -J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED + org.jacoco jacoco-maven-plugin - 0.8.0 + 0.8.11 prepare-agent diff --git a/src/test/java/com/github/jsonzou/jmockdata/JMockDataTest.java b/src/test/java/com/github/jsonzou/jmockdata/JMockDataTest.java index 3741dda25..aef377fd0 100644 --- a/src/test/java/com/github/jsonzou/jmockdata/JMockDataTest.java +++ b/src/test/java/com/github/jsonzou/jmockdata/JMockDataTest.java @@ -337,6 +337,46 @@ public void noneModifierBean_1() throws IllegalAccessException { printBeanFieldInfo(ModifierBean.class,basicBean); } + /** + * 测试HttpResult泛型结果包装类 + */ + @Test + public void testHttpResult() { + // 测试HttpResult + HttpResult result1 = JMockData.mock(new TypeReference>(){}); + assertNotNull(result1); + assertNotNull(result1.getCode()); + assertNotNull(result1.getMessage()); + assertNotNull(result1.getData()); + assertTrue(result1.getData() instanceof String); + System.out.println("HttpResult: " + JSON.toJSONString(result1, true)); + + // 测试HttpResult + HttpResult result2 = JMockData.mock(new TypeReference>(){}); + assertNotNull(result2); + assertNotNull(result2.getCode()); + assertNotNull(result2.getMessage()); + assertNotNull(result2.getData()); + assertTrue(result2.getData() instanceof Integer); + System.out.println("HttpResult: " + JSON.toJSONString(result2, true)); + + // 测试HttpResult + HttpResult result3 = JMockData.mock(new TypeReference>(){}); + assertNotNull(result3); + assertNotNull(result3.getCode()); + assertNotNull(result3.getMessage()); + assertNotNull(result3.getData()); + assertTrue(result3.getData() instanceof BasicBean); + System.out.println("HttpResult: " + JSON.toJSONString(result3, true)); + + // 测试HttpResult> + HttpResult> result4 = JMockData.mock(new TypeReference>>(){}); + assertNotNull(result4); + assertNotNull(result4.getData()); + assertTrue(result4.getData() instanceof List); + System.out.println("HttpResult>: " + JSON.toJSONString(result4, true)); + } + /** * 打印bean 属性信息 * @param clazz diff --git a/src/test/java/com/github/jsonzou/jmockdata/bean/HttpResult.java b/src/test/java/com/github/jsonzou/jmockdata/bean/HttpResult.java new file mode 100644 index 000000000..5600cbd49 --- /dev/null +++ b/src/test/java/com/github/jsonzou/jmockdata/bean/HttpResult.java @@ -0,0 +1,67 @@ +package com.github.jsonzou.jmockdata.bean; + +/** + * 通用HTTP响应结果包装类 + * Common HTTP response result wrapper class + * + * @param 数据类型 + */ +public class HttpResult { + + /** + * 响应状态码 + */ + private Integer code; + + /** + * 响应消息 + */ + private String message; + + /** + * 响应数据 + */ + private T data; + + public HttpResult() { + } + + public HttpResult(Integer code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + @Override + public String toString() { + return "HttpResult{" + + "code=" + code + + ", message='" + message + '\'' + + ", data=" + data + + '}'; + } +}