mock-response-spring-boot-starter
- 基于spring的aop实现的mock-response-spring-boot starter组件,使得项目mock变得异常简单, 对代码侵入也较小,支持spring boot,和spirng mvc等spring相关项目, [项目地址]: https://gitee.com/hoowaynew/mock-response-spring-boot-starter
一. 快速开始
spring boot项目接入
- 添加lock starter组件依赖,目前还没上传到公共仓库,需要自己下源码build
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>mock-response-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
-
application.yml配置全局开关, 为了防止误开启对线上造成影响, 全局开关默认是关闭的, key:spring.mock.response.enable = true
-
在需要mock的方法上,添加注解@MockResponse(require需要设置为true, 默认false处于关闭状态),当前支持三种mock数据来源,具体如下:
- 直接在注解value字段中配置需要mock的响应json即可(简单数据可快速配置后响应回去)
- 在application.yml配置文件中配置需要相应的json数据, 在value字段设置配置文件中的路径key(如果部署运行需确保文件已经打包到服务中)
- 自己构造service进行构造数据返回, 其中在clazz字段指定该类class, method指定构造mock数据的方法名即可(如果部署运行需确保该service已经打包到服务中)
package org.springframework.boot.autoconfigure.mock.test;
import org.springframework.boot.autoconfigure.mock.annotation.MockResponse;
import org.springframework.boot.autoconfigure.mock.model.MockResTypeEnum;
import org.springframework.stereotype.Service;
@Service
public class MockResService {
@MockResponse(require = true, value = "{'name': 'mock', 'age': 20, 'addr': '广东省深圳市'}", mockResTypeEnum = MockResTypeEnum.JSON)
public User getUserFromJson(String name, Integer age) {
final User user = new User();
user.setName(name);
user.setAge(age);
return user;
}
@MockResponse(require = true, value = "spring.mock.response.user", mockResTypeEnum = MockResTypeEnum.PROP)
public User getUserFromProp(String name, Integer age) {
final User user = new User();
user.setName(name);
user.setAge(age);
return user;
}
@MockResponse(require = true, clazz = MockPrepareService.class, method = "buildMockUser", mockResTypeEnum = MockResTypeEnum.METHOD)
public User getUserFromMethod(String name, Integer age) {
final User user = new User();
user.setName(name);
user.setAge(age);
return user;
}
}
spring mvc项目接入
- 其他步骤和spring boot步骤一样,只需要spring-xx.xml配置中添加KlockAutoConfiguration类扫描即可,如:
<context:component-scan base-package="org.springframework.boot.autoconfigure.mock.MockResAutoConfiguration"/>
二. 使用参数说明
application.yml配置参数说明
spring.mock.response.enable: true/false # mock全局开关, 不配置默认关闭
spring.mock.response.xxx: '{"key": "value"}' # 需要mock的响应数据
@MockResponse注解参数说明
// @MockResponse可以标注六个参数,作用分别如下
/**
* 是否启用当前mock响应
*/
boolean require() default false;
/**
* 指定需要mock的数据路径或者json response数据
*/
String value() default "";
/**
* 获取mock响应的prepare类
*/
Class<?> clazz() default Void.class;
/**
* 获取mock响应的prepare类方法
*/
String method() default "";
/**
* 获取mock响应的prepare类方法参数数组
*/
String[] params() default {};
/**
* mock响应类型配置, 默认走配置文件方式响应
*/
MockResTypeEnum mockResTypeEnum() default MockResTypeEnum.PROP;
三. 关于测试
- 工程test模块下,为mock各种取值方式的测试模块。可以快速体验mock response的效果。
Q.E.D.