我编写了测试REST POST调用的JUnit代码。
@Test
public void testPOST_MAPOutput() throws IOException {
String url="https://reqres.in/api/register";
requestFields.put("email","eve.holt@reqres.in");
requestFields.put("password","pistol");
Map<String,Object> output=new HashMap<String, Object>();
output.put("id","4");
output.put("token","QpwL5tke4Pnpja7X4");
System.out.println(output);
assertEquals(output,restWebServices.doPostRequest(url,requestFields,httpHeaders, HashMap.class));
}预期的输出和实际的输出似乎完全相等,但是JUnit测试失败了。
预期:java.util.HashMap<{id=4,token=QpwL5tke4Pnpja7X4}> 实际:java.util.HashMap<{id=4,token=QpwL5tke4Pnpja7X4}>
发布于 2019-08-22 10:49:24
在查看您的代码时,我非常肯定问题在于Map<String, Object>表示法,在这里您使用Object作为值。因此,可能有一个String、一个数字(Integer、Long)或--实际上是任何其他的,只要它的toString()方法返回"4",您就会看到相同的输出。
例如,String "4“和Integer 4都会打印出相同的数字- 4,,但它们绝不是平等的!
考虑映射到更具体的Object类型,例如只使用String,并将结果从服务器转换为String,然后将其添加到Map进行比较。
https://stackoverflow.com/questions/57596350
复制相似问题