在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Tiny-Mock简介tiny-mock是一个轻量mock框架,主要为了实现mock与真实代码解耦。 特性tiny-mock 分本地mock(local-mock)和服务mock(server-mock)。
I. local-mock提供了三种注解:@MockReturn、@MockBy、@MockByHttp。 1. @MockReturn(MockReturnXmlItem)注解形式:@MockReturn /** * 含有@MockReturn的方法,将直接返回value */@Target({METHOD})@Retention(RUNTIME)public @interface MockReturn { /** * mock的返回值。复杂对象使用JSON串作为返回值 * @see MockAspect */ String value();} 特定值: String THROW = "THROW()"; // 抛出一个异常String RANDOM = "RANDOM()"; // 返回一个随机对象String RANDOM_EXCEPTION = "RANDOM_EXCEPTION()"; // 返回随机对象或抛出一个异常 xml配置形式 <bean class="com.kvn.mock.local.config_mock.MockReturnXmlItem" p:mockedMethodFullPath="com.kvn.mock.local.test.ServiceA#method_12()" p:returnValue="123" /> 2. @MockBy(MockByXmlItem)使用在真实接口上,通过第三个类来代理执行真实逻辑,然后返回。注解形式:@MockBy /** * 含有@MockBy注解的方法,将使用mockMethodFullPath指定的方法的返回值来返回 * @author Created by wzy on 2017/6/1. */@Target({ METHOD })@Retention(RUNTIME)public @interface MockBy { /** * mock方法的全路径。通过它来定位到mock的类和方法 * <pre> * 形如: * mock.com.kvn.service.MockServiceA#mockMethod_4() * mock.com.kvn.service.MockServiceA#mockMethod_11(java.lang.String,com.kvn.domain.Foo) * <b>默认值:</b> * 默认使用的mock类路径为[mock类全路径 = "mock." + 真实类的包名 + ".Mock" + 真实类的类名], * 默认使用的mock方法名与参数与原方法保持一致 * </pre> * @return */ String delegateMethodFullPath() default MOCKBY_DEFALUT_PATH; String MOCKBY_DEFALUT_PATH = "DEFAULT_PATH";} xml配置形式 <!-- 使用默认的delegateMethodFullPath。 --> <bean class="com.kvn.mock.local.config_mock.MockByXmlItem" p:mockedMethodFullPath="com.kvn.service.ServiceA#method_22(java.lang.String,com.kvn.domain.Foo)" /> 3. @MockByHttp(MockByHttpXmlItem)使用第三方Mock服务来代理执行真实逻辑,然后返回mock的结果。为了设计的轻量和对异构系统的支持友好,这里使用了http的方式来调用第三方mock服务。(可以配合mock-server一起使用,也可以自开发mock-server)注解形式:@MockByHttp /** * 使用http接口来mock,实现mock服务,解耦mock */@Target({ METHOD })@Retention(RUNTIME)public @interface MockByHttp { /** * http url。默认使用mock/class/method?params=xxx */ String serverPath() default "";} xml配置形式 <bean class="com.kvn.mock.local.config_mock.MockByHttpXmlItem" p:mockedMethodFullPath="com.kvn.service.ServiceA#method_17()" /> II. server-mock接收local-client发送过来的mock请求,并分发到相应的mock请求处理类,进行处理,然后返回mock的执行结果。默认是将local-client的mock请求路由到http://xxx.xxx.xxx:xx/mock/class/method?params=xxx当然,也可以指定路由地址。server-mock采用Spring MVC搭建,配合Tomcat一起部署。 构想
设计
Quick Start可以参考local-mock里面的test类:MockByTest.java、MockReturnTest.java、MockByHttpTest.java // 注解形式@MockReturn("mock_123")public String method_2() { System.out.println("执行真实方法:method_2"); return "do method_2------[real method methodA_2]";} @MockReturn(MockReturn.RANDOM)public Foo method_9() { Foo foo = new Foo(); foo.setId(1); foo.setName("真实Name"); foo.setNo("真实No"); System.out.println("执行真实方法:method_9"); return foo;} // 配置形式 (具体参考src/test/resources/beans/beans-mock.xml)<bean class="com.kvn.mock.local.config_mock.MockReturnXmlItem" p:mockedMethodFullPath="com.kvn.mock.local.test.ServiceA#method_12()" p:returnValue="RANDOM()" /> MockBy eg: // 注解形式@MockBy(delegateMethodFullPath="com.kvn.mock.local.test.MockServiceA#mockMethod_4()")public String method_4() { System.out.println("执行真实方法:method_4"); return "do method_4------[real method methodA_4]";} // 配置形式 (具体参考src/test/resources/beans/beans-mock.xml)<bean class="com.kvn.mock.local.config_mock.MockByXmlItem" p:mockedMethodFullPath="com.kvn.mock.local.test.ServiceA#method_14(java.lang.String,com.kvn.mock.local.test.Foo)" p:delegateMethodFullPath="com.kvn.mock.local.test.MockServiceA#mockMethod_14(java.lang.String,com.kvn.mock.local.test.Foo)" /> MockByHttp eg: // 注解形式@MockByHttppublic String method_15(){ System.out.println("执行真实方法:method_15"); return "do method_15------[real method method_15]";} // 配置形式 (具体参考src/test/resources/beans/beans-mock.xml)<bean class="com.kvn.mock.local.config_mock.MockByHttpXmlItem" p:mockedMethodFullPath="com.kvn.mock.local.test.ServiceA#method_17()" /> |
请发表评论