springboot openfeign从JSON文件读取数据问题
对openfeign不清楚的同学可以参考下我的这篇文章:springboot~openfeign从此和httpClient说再见
对于openfeign来说,帮助我们解决了服务端调用服务端的问题,你不需要关心服务端的URI,只需要知道它在eureka里的服务名称即可,同时你与服务端确定了服务方法的参数和返回值之后,我们可以在单元测试时mock这些服务端方法即可,真正做到了单元测试,而不需要与外界资源进行交互。
今天主要说一下在openfeign里读取JSON文件的问题,我们将测试所需要的数据存储到文件里,在修改时关注点比较单纯。
JSON帮助类,主要使用了objectMapper这个对象
/** *将json转换为对象. * *@parampath文件路径 */ publicTfromJson(Stringpath,Class cls){ try{ returnobjectMapper.readValue(this.fromResource(path,Charsets.UTF_8),cls); }catch(Exceptione){ thrownewIllegalStateException("读取json失败:"+path,e); } } /** *将json数组转换为对象列表. * *@parampath文件路径 */ public List listFromJson(Stringpath,TypeReferencetypeReference){ try{ returnobjectMapper.readValue(fromResource(path,Charsets.UTF_8),typeReference); }catch(Exceptione){ thrownewIllegalStateException("读取json失败:"+path,e); } }
在Mock类型中,可以使用这个方法读JSON文件的内容
@Configuration @Profile("integTest") publicclassServiceClientMock{ @Bean publicServiceClientregisterServiceClient(){ AccountClientclient=mock(AccountClient.class); when(client.del( anyString(), anyString(), anyString(), anyMap())).thenReturn(fromJson("order/orders.json",Map.class)); } }
上面代码主要在模拟了ServiceClient对象里的del方法,有三个字符型输入参数,返回值从JSON文件读取,在单元测试里,直接注入的是ServiceClientMock对象,我们
可以从@Profile注解里看到,它运行在integTest环境中,在生产环境里,将使用真正的服务。
总结
以上所述是小编给大家介绍的springbootopenfeign从JSON文件读取数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!