【发布时间】:2013-01-03 08:20:59
【问题描述】:
我在 mongo 中有需要验证的数据:
"items" : [
{
"item" : 0,
},
{
"item" : 1,
}
],
我的代码中有一个 for 循环:
for (Object a : getItems()){
HashMap<?, ?> b = (HashMap<?, ?>)a;
assertTrue(b.containsValue(0));
}
这里有一个问题,因为 items 的值为 1 和 0,如果它也包含 1,我需要为第二次迭代断言。如何验证 1 和 0 是否都存在?
有没有其他的断言方法可以做到这一点?
已编辑:
List lt1 = new ArrayList();
lt1.add(0);
lt1.add(1);
List lt2 = new ArrayList();
for (Object a : getItems()){
HashMap b = (HashMap)a;
lt2.add(b.get("item");
}
assertThat(lt2, hasItems(lt1));
这会在 assertThat.. 行引发调用目标异常。 此外,JUNIT 显示一个断言错误,如下所示:
Expected : A collection of [0,1]
Got : [0,1]
【问题讨论】:
-
它取决于创建哈希映射的热度。您可以使用哈希映射,其中键映射到列表,然后断言列表同时包含 0 和 1
-
由于键是相同的,我会认为最后一个值替换了前一个值。我建议您使用“项目”列表而不是地图(或使键唯一)
-
是的,完全正确。而且我不能使键唯一。我可以创建一个列表并添加 0 和 1。但是,如何在一次只取 1 个值的 for 循环中验证它们?
-
我想我成功了!感谢@PeterLawrey 的帮助