目录
引用
一、拉去dynamicMockServer最新代码
二、导入测试接口配置文件。
三、再次运行APP,验证服务是否可用编辑
四、个性化配置自己需要的接口和返回信息
五、根据访问参数动态返回信息
六、自定义接口和参数校验配置
在平时开发时经常需要与服务器进行联调,但是服务器开发往往比前端的要滞后。这时候需要我们自己去mock数据来调通流程。
今天给大家介绍一款Android上的MockServer----DynamicMockServer,支持接口调用,静态文件。
DynamicMockServer:
implementation 'com.gitee.gggl:dynamic-mock-server:v1.0'
1、git clone https://gitee.com/gggl/dynamic-mock-server.git
2、Android Studio 导入dynamic-mock-server
工程结构:
1、app -> 测试工程,依赖并启动mockserver服务。
2、mockserver -> http mock server
1、运行app,默认在sdcard里创建配置文件目录。
/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test
2、导入测试使用的配置文件。
测试使用的配置文件在工程的(mock_server/configuration_test)目录下。
将mock_server/configuration_test下的所有文件导入到手机的/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test目录下。
文件目录解析:
再次运行app,点击static按钮,默认会展示出两张图片。如下图。说明我们的服务已经正常启动了。
打开mock_server_configuration.json配置文件。这个文件定义了服务器配置和我们需要的接口信息。
port:定义服务器端口。
base_path:定义我们服务器使用的sdcard根目录。后续的get、post、static返回信息都在这个base_path目录下。
get数组:定义所有get请求
uri:接口的URI
default_path:接口返回信息文件路径。比如login接口:我们默认的返回信息是get/login文件(get目录由代码自动添加)最后我们的login文件放在/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test/get/login
static:标识这个资源是否是静态资源,如果是静态资源,mockserver默认会去static目录下查找对应的文件。
仅需根据提供的测试配置信息格式来配置自己需要的接口即可,配置完成后将mock_server_configuration.json重新push回手机的/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test/目录下。注:此处如果修改了base_path,根据自己修改后的目录进行push。
比如登录接口输入用户名密码,我们需要根据用户名密码动态判断是否登录成功,返回不同的提示信息。
dynamic-mock-server支持我们添加destnation(最终路由点)来支持动态判断参数的功能。
private fun loginDestnation(destnationList : ArrayList) {
val destnation : Destnation = Destnation()
destnation.uri = "/login"
destnation.destnation = "/login_success"
val loginPredicate : (params : Map>) -> Boolean = {
val a : Boolean = (it.get("username")?.get(0) == "menshen")
val b : Boolean = (it.get("password")?.get(0) == "woshildx")
a && b
}
destnation.predicate = loginPredicate
destnation.destnation = "/login_success"
destnationList.add(destnation)
}
Destnation实体对应着我们刚刚配置的一个get或者post请求,只是会多了一个predicate来进行判断校验。predicate是一个返回布尔值的函数,需要开发者自己去实现,predicate接收url输入的输入参数。
predicate的输入参数为我们接口访问时输入的参数。例:http://127.0.0.1:8080/login?username=menshen&password=123456
对应的params则会有username和password两个key和对应的值,我们可以通过判断username和password是否合法,来决定是否返回login_success。本例中menshen、123456校验失败,则返回我们配置文件中定义的默认结果,否则返回login_success对应的文件内容。
浏览器里测试:http://127.0.0.1:8080/login?username=menshen&password=123456
我们会看到login faild的结果
浏览器里测试:http://127.0.0.1:8080/login?username=menshen&password=woshildx
我们会看到Welcom XXX的结果
这时我们打开login和login_success文件,你会发现这两个结果分别是预先定义在这两个文件内容中的。
现在你可以通过修改mock_server_config.json 来自定义你的mock_server了。
注意修改完成后需要将文件push到手机对应的目录内。
当想要改变返回结果的时候只需要改变文件内容并重新push回手机即可,不需要重新运行项目。