【发布时间】:2019-08-28 17:04:31
【问题描述】:
总结:当从方法调用返回时,我对如何处理单个“Map.Entry”感到困惑。在我的具体情况下,我需要对此进行模拟(目前使用模拟),但我的问题是关于如何将“Map.Entry”作为一个单元处理,而不是关于模拟它......两者的帮助都会很大赞赏。
=============================
我有如下方法。我需要创建一个匹配的实体(我假设为 Map.Entry),以便在调用该方法时返回模拟。我不知道如何创建一个 Map.Entry。我已经将调用一直追溯到对 db 的 sql 调用,但只能找到将返回的 Object 强制转换为 Map.Entry 的点。
没有说明如何构建这样的东西。我需要有关如何构建可由模拟返回的单个“Map.Entry”的帮助。
public Map.Entry<Date,Boolean> getLastModified(SomeClass someClass)
throws Exception
{
return clusterViewDataProvider.getClusterModified(someClass);
}
这是为我创建模拟对象的行。为简单起见,假设上面的方法在“Foo”类中。
Foo foo = mock(Foo.class);
然后我需要这样的东西来说明当方法被调用(作为模拟)时,它应该返回我需要构建的“Map.Entry”。
when(foo.getLastModifiedGid(any())).thenReturn(the Map.Entry I don't know how to make yet);
最后,我需要对返回的 Map.Entry 进行一些可测试的断言。我可以检查断言中的键和值 - 没有比这更重要的了 - 再次,我不确定如何将其作为单个 Map.Entry 访问......
assertTrue(The Key == SomeDate)
assertTrue(The Value == True)
如果我对任何事情不清楚,请发表评论,我会澄清。格拉齐。
【问题讨论】:
-
转到 Map.Entry 的 javadoc:docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html。查看列表 f 实现类。选择您喜欢的那个。创建该类的实例。
-
如何将 Map.Entry 放入 HashMap?我如何接受该方法的返回值?我可能使用哪个实现类的实例并不重要,但我不清楚代码会是什么样子,在这种情况下阅读文档并不是很有用。代码示例将不胜感激。这个链接表明它并不简单......stackoverflow.com/questions/39441096/…
-
when(foo.getLastModifiedGid(any())).thenReturn(new AbstractMap.SimpleEntry(someKey, someValue)) -
@JBNizet 非常感谢!
-
我还发现了这种方法来创建我的“由模拟返回的对象” Map.Entry me = new AbstractMap.SimpleImmutableEntry (new Date(), Boolean.TRUE);
标签: java unit-testing collections