springboot openfeign从JSON文件读取数据问题

 更新时间:2018年06月11日 14:08:57   作者: 张占岭  
今天主要说一下在openfeign里读取JSON文件的问题,我们将测试所需要的数据存储到文件里,在修改时关注点比较单纯

对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文件读取数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java擦除和转换实例分析

    Java擦除和转换实例分析

    这篇文章主要介绍了Java擦除和转换,结合实例形式分析了java擦除和转换概念、功能及相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • SpringBoot集成RocketMQ发送事务消息的原理解析

    SpringBoot集成RocketMQ发送事务消息的原理解析

    RocketMQ 的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致,这篇文章主要介绍了SpringBoot集成RocketMQ发送事务消息,需要的朋友可以参考下
    2022-06-06
  • 基于字符串常用API(详解)

    基于字符串常用API(详解)

    下面小编就为大家带来一篇基于字符串常用API(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java文件IO操作教程之DirectIO的意义

    Java文件IO操作教程之DirectIO的意义

    这篇文章主要给大家介绍了关于Java文件IO操作教程之DirectIO的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 一文详解Java中的Stream的汇总和分组操作

    一文详解Java中的Stream的汇总和分组操作

    这篇文章主要为大家详细介绍了Java8中的Stream的汇总和分组的操作,文中的示例代码讲解详细,对我们学习Java有一定帮助,需要的可以参考一下
    2022-09-09
  • java实现动态数组

    java实现动态数组

    这篇文章主要为大家详细介绍了java实现动态数组,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java流形式返回前端的实现示例

    Java流形式返回前端的实现示例

    ​ Java后端开发项目时,需要给前端传一些数据,本文主要介绍了Java流形式返回前端的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 树,二叉树(完全二叉树,满二叉树)概念图解

    树,二叉树(完全二叉树,满二叉树)概念图解

    今天小编就为大家分享一篇关于二叉树的图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧,希望能对你有所帮助
    2021-07-07
  • Java SWT中常见弹出框实例总结

    Java SWT中常见弹出框实例总结

    刚开始写Java工具的小伙伴可能不知道怎么写消息对话框,在这里总结一些常用的几种消息弹出框,下面这篇文章主要给大家介绍了关于Java SWT中常见弹出框的相关资料,需要的朋友可以参考下
    2023-01-01
  • SpringBoot整合Redisson的两种方式

    SpringBoot整合Redisson的两种方式

    这篇文章主要介绍了Spring Boot整合Redisson的两种方式,方式一直接使用yml配置,方式二创建RedissonConfig配置类,文中通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-04-04

最新评论