断言两个HashMaps失败并出现断言错误

时间:2017-06-17 09:15:56

标签: java groovy junit

我正在尝试使用HashMap expect 来断言从 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));
}

但我得到的断言错误如下

  

预期:是&lt; {paymentMethod = {preAuthorizationProfile = {amount = {amount = 850,monetaryAmount = UNITEDSTATES_DOLLAR},source = {sourceSystem = ABCD,source   Location = EFGH},preAuthorizationId = OL_DF161216J34491}}}&gt;        但是:是&lt; {paymentMethod = {preAuthorizationProfile = {source = {sourceSystem = ABCD,sourceLocation = EFGH}},preAuthorizationId = OL_DF161216J34491,a   mount = {amount = 850,monetaryAmount = UNITEDSTATES_DOLLAR}}}&gt;

1 个答案:

答案 0 :(得分:3)

我已经收到了您的错误消息并将其格式化,使得嵌套地图的级别更加清晰。请注意amountpreAuthorizationId在两张地图之间的不同级别。

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
        }
    }
}
>

我可以建议,不要使用地图地图的地图,而是尝试提出代表您尝试做的事情的课程。这将使您的代码更具弹性,并且更不容易出现这些错误。