中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~openfeign從(cong)JSON文件(jian)讀取數據

對openfeign不清楚的同學可以先看我這篇文章:springboot~openfeign從此和httpClient說再見

對(dui)于openfeign來說,幫助我們解決了服(fu)(fu)務(wu)端(duan)(duan)調用服(fu)(fu)務(wu)端(duan)(duan)的(de)(de)問(wen)題,你不(bu)需(xu)(xu)要(yao)關(guan)心服(fu)(fu)務(wu)端(duan)(duan)的(de)(de)URI,只(zhi)需(xu)(xu)要(yao)知道它在(zai)eureka里的(de)(de)服(fu)(fu)務(wu)名(ming)稱即可,同時(shi)你與服(fu)(fu)務(wu)端(duan)(duan)確定了服(fu)(fu)務(wu)方法的(de)(de)參數和返回值(zhi)之(zhi)后,我們可以在(zai)單(dan)元(yuan)測試時(shi)mock這些(xie)服(fu)(fu)務(wu)端(duan)(duan)方法即可,真正做到了單(dan)元(yuan)測試,而不(bu)需(xu)(xu)要(yao)與外界資源(yuan)進(jin)行交互。

今天主要說一下(xia)在(zai)openfeign里(li)讀取JSON文(wen)件(jian)(jian)的問題,我們將(jiang)測(ce)試所(suo)需要的數據(ju)存儲(chu)到文(wen)件(jian)(jian)里(li),在(zai)修改時關注點(dian)比(bi)較單純。

JSON幫助(zhu)類,主要使用(yong)了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數(shu)組轉換(huan)為對象(xiang)列(lie)表.
   *
   * @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類(lei)型(xing)中,可以使用這個(ge)方(fang)法讀JSON文(wen)件(jian)的內容

@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));
  }
}

上(shang)面代(dai)碼(ma)主要在模擬了ServiceClient對象里的(de)del方法,有三個字符(fu)型輸入參數,返回值從JSON文件讀取(qu),在單元(yuan)測試里,直接注入的(de)是ServiceClientMock對象,我們

可以(yi)從@Profile注解里(li)看到(dao),它運行在integTest環境中,在生產環境里(li),將使(shi)用(yong)真正的服務。

感謝各位閱讀!

posted @ 2018-06-11 11:40  張占嶺  閱讀(3500)  評論(1)    收藏  舉報