Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,39 @@ public void testGenericData() {
}
```

### 模拟HTTP结果包装类
#### 支持模拟常见的HTTP响应结果包装类,如HttpResult<T>

```java
//定义一个泛型HTTP结果包装类
public class HttpResult<T> {
private Integer code;
private String message;
private T data;
//getter setter省略...
}

@Test
public void testHttpResult() {
// 模拟HttpResult<String>
HttpResult<String> result1 = JMockData.mock(new TypeReference<HttpResult<String>>(){});
assertNotNull(result1);
assertNotNull(result1.getCode());
assertNotNull(result1.getMessage());
assertNotNull(result1.getData());

// 模拟HttpResult<BasicBean>
HttpResult<BasicBean> result2 = JMockData.mock(new TypeReference<HttpResult<BasicBean>>(){});
assertNotNull(result2);
assertNotNull(result2.getData());

// 模拟HttpResult<List<String>>
HttpResult<List<String>> result3 = JMockData.mock(new TypeReference<HttpResult<List<String>>>(){});
assertNotNull(result3);
assertNotNull(result3.getData());
}
```

### 自定义Mocker类注册

```java
Expand Down
22 changes: 19 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand All @@ -85,7 +85,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<version>3.11.0</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
Expand All @@ -94,12 +94,28 @@
<encoding>UTF-8</encoding>
<optimize>true</optimize>
<useIncrementalCompilation>false</useIncrementalCompilation>
<fork>true</fork>
<!-- Module access flags for Lombok compatibility with Java 9+ build environments
These flags are only used during compilation and don't affect the target JDK version.
The generated bytecode still targets JDK 1.8 for runtime compatibility. -->
<compilerArgs>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.0</version>
<version>0.8.11</version>
<executions>
<execution>
<id>prepare-agent</id>
Expand Down
40 changes: 40 additions & 0 deletions src/test/java/com/github/jsonzou/jmockdata/JMockDataTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,46 @@ public void noneModifierBean_1() throws IllegalAccessException {
printBeanFieldInfo(ModifierBean.class,basicBean);
}

/**
* 测试HttpResult泛型结果包装类
*/
@Test
public void testHttpResult() {
// 测试HttpResult<String>
HttpResult<String> result1 = JMockData.mock(new TypeReference<HttpResult<String>>(){});
assertNotNull(result1);
assertNotNull(result1.getCode());
assertNotNull(result1.getMessage());
assertNotNull(result1.getData());
assertTrue(result1.getData() instanceof String);
System.out.println("HttpResult<String>: " + JSON.toJSONString(result1, true));

// 测试HttpResult<Integer>
HttpResult<Integer> result2 = JMockData.mock(new TypeReference<HttpResult<Integer>>(){});
assertNotNull(result2);
assertNotNull(result2.getCode());
assertNotNull(result2.getMessage());
assertNotNull(result2.getData());
assertTrue(result2.getData() instanceof Integer);
System.out.println("HttpResult<Integer>: " + JSON.toJSONString(result2, true));

// 测试HttpResult<BasicBean>
HttpResult<BasicBean> result3 = JMockData.mock(new TypeReference<HttpResult<BasicBean>>(){});
assertNotNull(result3);
assertNotNull(result3.getCode());
assertNotNull(result3.getMessage());
assertNotNull(result3.getData());
assertTrue(result3.getData() instanceof BasicBean);
System.out.println("HttpResult<BasicBean>: " + JSON.toJSONString(result3, true));

// 测试HttpResult<List<String>>
HttpResult<List<String>> result4 = JMockData.mock(new TypeReference<HttpResult<List<String>>>(){});
assertNotNull(result4);
assertNotNull(result4.getData());
assertTrue(result4.getData() instanceof List);
System.out.println("HttpResult<List<String>>: " + JSON.toJSONString(result4, true));
}

/**
* 打印bean 属性信息
* @param clazz
Expand Down
67 changes: 67 additions & 0 deletions src/test/java/com/github/jsonzou/jmockdata/bean/HttpResult.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package com.github.jsonzou.jmockdata.bean;

/**
* 通用HTTP响应结果包装类
* Common HTTP response result wrapper class
*
* @param <T> 数据类型
*/
public class HttpResult<T> {

/**
* 响应状态码
*/
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 +
'}';
}
}