方便大家可以在app上使用大搜车的easymock,提供部分接口mock,以及真实数据录制功能
为了方便小伙伴快速看到当前类库的一个效果,笔者实现了一个不需要后台的本地mock版本的app,直接安装即可体验效果 local-mock-app.apk
在前端和移动端的开发中,造数据一直是一个非常苦恼的事情,麻烦后端也并不是一个长久之计,为了解决这个问题,在开源环境下产生了大量的mock平台,支持利用moc.js语法随机生成各种mock数据 然而,对于移动端来说,使用这些平台天然有一些弊端要解决:
- url的动态切换,每次运行中利用mock的网络请求要和真实网络请求得能无缝切换,否则就必须得手动将mock地址的URL改回真实的URL
- 部分接口的mock依赖真实的数据接口,即进入这个界面进行调试,必须先把前面的接口全部mock掉
- 实质的ui界面,操控url动态切换;方便用户可以在真实url和虚假url之间无缝衔接
- 支持将真实的数据记录下来,重新更新回已有的接口
- 项目中使用了OKHttp做为网络请求框架
- 想尝试使用easymock作为mock工具
- 最好后端的接口文档为swagger,否则使用EasyMock维护接口不是很友好
app - EasyMockHelper的Demo用法展示示例app
mockHelper - mockHelper源代码
- 根目录的gradle文件
allprojects {
repositories {
//添加jitpack.io
maven { url 'https://jitpack.io' }
}
}
2.添加 EasyMockMaster的依赖
dependencies {
//记得版本号改为最新
implementation 'com.github.blackjuly:EasyMockMaster:0.1.1'
}
3.在你的app的application文件中,初始化
class DemoApplication {
public static String baseIp ="http://ip地址:port/";
public static String userId = "用户名";
public static String password = "密码";
public static String mockDataProjectId = "工程id";
public static String projectBaseUrl = "工程baseUrl";
@Override
public void onCreate() {
//初始化,正式版可以通过if判断控制不初始化
EasyMockHelperApplication.init(
this
,userId
,userId
,baseIp //示例:http://192.168.5.79:7300/
,mockDataProjectId //示例:5ef05742d55d4900203eb5d5
,projectBaseUrl //http://192.168.5.79:7300/mock/5ef05742d55d4900203eb5d5/xxxxdemo
//添加 url的匹配规则,分隔符规则详情看wiki
, new UrlMatcher.SplitterUrlMatcher("xxxxdemo") );//主要就是上面工程url的最后一段
}
}
4.将mock功能添加到你的okhttp的网络模块
import okhttp3.Interceptor;
import okhttp3.OkHttpClient.Builder;
import retrofit2.Retrofit;
public class SomeNetworkClass {
public Retrofit.Builder init(){
Builder clientBuilder = new Builder();
IMockService mockService = new MockServiceImpl();
List<Interceptor> list = mockService.getMockInterceptors();
for (Interceptor interceptor : list) {
clientBuilder.addInterceptor(interceptor);
}
// 构建 Retrofit
return new Retrofit.Builder()
.client(clientBuilder.build())
.baseUrl("www.xxx.com")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
}
5.OK,可以开始享受你的mock生活啦~~
具体mock功能详细使用,请看wiki!