springboot openfeign從JSON文件讀取數(shù)據(jù)問題
對openfeign不清楚的同學(xué)可以參考下我的這篇文章:springboot~openfeign從此和httpClient說再見
對于openfeign來說,幫助我們解決了服務(wù)端調(diào)用服務(wù)端的問題,你不需要關(guān)心服務(wù)端的URI,只需要知道它在eureka里的服務(wù)名稱即可,同時你與服務(wù)端確定了服務(wù)方法的參數(shù)和返回值之后,我們可以在單元測試時mock這些服務(wù)端方法即可,真正做到了單元測試,而不需要與外界資源進(jìn)行交互。
今天主要說一下在openfeign里讀取JSON文件的問題,我們將測試所需要的數(shù)據(jù)存儲到文件里,在修改時關(guān)注點(diǎn)比較單純。
JSON幫助類,主要使用了objectMapper這個對象
/** * 將json轉(zhuǎn)換為對象. * * @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數(shù)組轉(zhuǎn)換為對象列表. * * @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文件的內(nèi)容
@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方法,有三個字符型輸入?yún)?shù),返回值從JSON文件讀取,在單元測試?yán)?,直接注入的是ServiceClientMock對象,我們
可以從@Profile注解里看到,它運(yùn)行在integTest環(huán)境中,在生產(chǎn)環(huán)境里,將使用真正的服務(wù)。
總結(jié)
以上所述是小編給大家介紹的springboot openfeign從JSON文件讀取數(shù)據(jù)問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot集成RocketMQ發(fā)送事務(wù)消息的原理解析
RocketMQ 的事務(wù)消息提供類似 X/Open XA 的分布事務(wù)功能,通過事務(wù)消息能達(dá)到分布式事務(wù)的最終一致,這篇文章主要介紹了SpringBoot集成RocketMQ發(fā)送事務(wù)消息,需要的朋友可以參考下2022-06-06java實(shí)現(xiàn)動態(tài)數(shù)組
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)動態(tài)數(shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08