springboot openfeign从JSON文件读取数据问题
作者:张占岭 时间:2023-11-09 15:55:55
对openfeign不清楚的同学可以参考下我的这篇文章:springboot~openfeign从此和httpClient说再见
对于openfeign来说,帮助我们解决了服务端调用服务端的问题,你不需要关心服务端的URI,只需要知道它在eureka里的服务名称即可,同时你与服务端确定了服务方法的参数和返回值之后,我们可以在单元测试时mock这些服务端方法即可,真正做到了单元测试,而不需要与外界资源进行交互。
今天主要说一下在openfeign里读取JSON文件的问题,我们将测试所需要的数据存储到文件里,在修改时关注点比较单纯。
JSON帮助类,主要使用了objectMapper这个对象
/**
* 将json转换为对象.
*
* @param path 文件路径
*/
public <T> T fromJson(String path, Class<T> cls) {
try {
return objectMapper.readValue(this.fromResource(path, Charsets.UTF_8), cls);
} catch (Exception e) {
throw new IllegalStateException("读取json失败:" + path, e);
}
}
/**
* 将json数组转换为对象列表.
*
* @param path 文件路径
*/
public <T> List<T> listFromJson(String path, TypeReference typeReference) {
try {
return objectMapper.readValue(fromResource(path, Charsets.UTF_8), typeReference);
} catch (Exception e) {
throw new IllegalStateException("读取json失败:" + path, e);
}
}
在Mock类型中,可以使用这个方法读JSON文件的内容
@Configuration
@Profile("integTest")
public class ServiceClientMock {
@Bean
public ServiceClient registerServiceClient() {
AccountClient client = mock(AccountClient.class);
when(client.del(
anyString(),
anyString(),
anyString(),
anyMap())).thenReturn(fromJson("order/orders.json", Map.class));
}
}
上面代码主要在模拟了ServiceClient对象里的del方法,有三个字符型输入参数,返回值从JSON文件读取,在单元测试里,直接注入的是ServiceClientMock对象,我们
可以从@Profile注解里看到,它运行在integTest环境中,在生产环境里,将使用真正的服务。
总结
以上所述是小编给大家介绍的springboot openfeign从JSON文件读取数据问题,希望对大家有所帮助。
来源:https://www.cnblogs.com/lori/archive/2018/06/11/9166351.html
标签:spring,boot,openfeign,json
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#中ToString数据类型格式大全(千分符)
2023-10-03 05:08:48
自定义类加载器以及打破双亲委派模型解析
2023-06-22 22:03:59
![](https://img.aspxhome.com/file/2023/0/57400_0s.png)
Java集合类的组织结构和继承、实现关系详解
2023-03-09 10:48:50
java中的HashMap多层嵌套
2023-11-27 07:34:52
![](https://img.aspxhome.com/file/2023/4/60344_0s.jpg)
Java中高效的判断数组中某个元素是否存在详解
2021-05-25 17:32:08
Android AIDL和远程Service调用示例代码
2022-07-14 03:06:15
![](https://img.aspxhome.com/file/2023/9/126799_0s.png)
JDK动态代理过程原理及手写实现详解
2022-07-07 00:35:23
C# WinForm国际化实现的简单方法
2023-08-07 04:29:34
![](https://img.aspxhome.com/file/2023/2/92902_0s.jpg)
Java利用过滤器实现完善登录功能
2021-07-20 15:07:05
![](https://img.aspxhome.com/file/2023/8/79868_0s.png)
Java设计模式之命令模式_动力节点Java学院整理
2023-12-11 13:32:03
![](https://img.aspxhome.com/file/2023/3/69913_0s.png)
Android数据存储几种方式讲解
2023-09-25 19:00:35
![](https://img.aspxhome.com/file/2023/7/86747_0s.png)
Android开发解决popupWindow重叠报错问题
2022-08-02 13:27:01
Android实现加载圈
2023-03-27 16:44:34
![](https://img.aspxhome.com/file/2023/7/137227_0s.jpg)
超实用的Java快捷键(总结)
2022-04-06 20:56:51
c# xml转word的实现示例
2023-01-05 15:47:59
![](https://img.aspxhome.com/file/2023/6/84416_0s.png)
Servlet实现文件的上传与下载
2023-08-08 06:13:43
![](https://img.aspxhome.com/file/2023/2/58152_0s.jpg)
解析:android 如何从JPEG生成BufferedImage
2022-06-03 20:11:50
spring AOP的Around增强实现方法分析
2021-10-03 06:22:39
C#获取鼠标在listview右键点击单元格的内容方法
2023-10-26 12:40:47
Android 实现视频字幕Subtitle和横竖屏切换示例
2023-02-06 07:29:37
![](https://img.aspxhome.com/file/2023/6/104646_0s.jpg)