我正在尝试使用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;
答案 0 :(得分:3)
我已经收到了您的错误消息并将其格式化,使得嵌套地图的级别更加清晰。请注意amount
和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
}
}
}
>
我可以建议,不要使用地图地图的地图,而是尝试提出代表您尝试做的事情的课程。这将使您的代码更具弹性,并且更不容易出现这些错误。