2017-06-17 86 views
0

我想断言从方法返回的HashMap getPaymentMethod()与HashMap 预计断言两个哈希映射失败,断言错误

public void testGetPaymentMethod() throws Exception { 
    List<Map<String, Object>> paymentOptionsList = new ArrayList<Map<String, Object>>(); 
    Map<String, Object> pO = new HashMap<String, Object>(); 
    Map<String, Object> pM = new HashMap<String, Object>(); 
    Map<String, Object> capam = new HashMap<String, Object>(); 
    Map<String, Object> preAuthDetail = new HashMap<String, Object>(); 
    preAuthDetail.put("sourceSystem", "ABCD"); 
    preAuthDetail.put("sourceLocation", "EFGH"); 
    preAuthDetail.put("authorizationCode", "OL_DF161216J34491"); 
    capam.put("paymentAmount", 850); 
    capam.put("preAuthDetail", preAuthDetail); 
    pM.put("capam", capam); 
    pO.put("pM",pM); 
    paymentOptionsList.add(pO); 
    @SuppressWarnings("unchecked") 
    HashMap<String, Object> result = (HashMap<String, Object>) myTransformation.getPaymentMethod(paymentOptionsList,null); 
    Map<String, Object> expected = new HashMap<String, Object>(); 
    Map<String, Object> preAuthorizationProfile = new HashMap<String, Object>();   
    Map<String, Object> source = new HashMap<String, Object>(); 
    Map<String, Object> amount = new HashMap<String, Object>(); 
    source.put("sourceSystem", "ABCD"); 
    source.put("sourceLocation", "EFGH"); 
    amount.put("amount", 850); 
    amount.put("monetaryAmount", "UNITEDSTATES_DOLLAR"); 
    preAuthorizationProfile.put("source", source); 
    preAuthorizationProfile.put("preAuthorizationId", "OL_DF161216J34491"); 
    preAuthorizationProfile.put("amount", amount); 
    pM.clear(); 
    pM.put("preAuthorizationProfile", preAuthorizationProfile); 
    expected.put("pM", pM); 
    assertThat(result,is(expected)); 
} 

但是我得到断言错误如下

预期:被< {PAYMENTMETHOD = {preAuthorizationProfile = {量= {量= 850,MONETARYAMOUNT = UNITEDSTATES_DOLLAR},源= {sourceSystem = ABCD ,源 位置= EFGH},preAuthorizationId = OL_DF161216J34491}}}> 但:是< {PAYMENTMETHOD = {preAuthorizationProfile = {源= {sourceSystem = ABCD,sourceLocation = EFGH}},preAuthorizationId = OL_DF161216J34491,一个 安装= {量= 850,monetaryAmount = UNITEDSTATES_DOLLAR}}}>

+0

期望有一个叫做'amount'的键,而实际上有一个'a mount'键(注意空格)。 –

+0

@JoeC我想我从cmd提示中复制它,这就是为什么它显示一个空格。 – Beginner

回答

3

我已将您的错误消息和格式化为使您的嵌套地图级别更清晰。请注意0​​和preAuthorizationId在两个地图之间的差异。

Expected: is < 
{ 
    paymentMethod={ 
     preAuthorizationProfile={ 
      amount={ 
       amount=850, 
       monetaryAmount=UNITEDSTATES_DOLLAR 
      }, 
      source={ 
       sourceSystem=ABCD, 
       sourceLocation=EFGH 
      }, 
      preAuthorizationId=OL_DF161216J34491 
     } 
    } 
} 
> but: was < 
{ 
    paymentMethod={ 
     preAuthorizationProfile={ 
      source={ 
       sourceSystem=ABCD, 
       sourceLocation=EFGH 
      } 
     }, 
     preAuthorizationId=OL_DF161216J34491, 
     amount={ 
      amount=850, monetaryAmount=UNITEDSTATES_DOLLAR 
     } 
    } 
} 
> 

可能我建议,而不是使用地图的地图的地图,试图想出代表你想要做什么班。这会使你的代码更具弹性,并且更不容易出现这样的错误。