java - 从方法调用返回时模拟和处理 Map.Entry

标签 java unit-testing collections

总结:当从方法调用返回时,我对如何处理单个“Map.Entry”感到困惑。在我的具体情况下,我需要模拟这个(目前使用 mockito)但我的问题是如何将“Map.Entry”作为一个单元来处理,而不是模拟它......对两者的帮助都会很大赞赏。

============================

我有如下方法。我需要创建一个匹配的实体(我假设是一个 Map.Entry),以便在调用该方法时模拟返回。我不知道如何创建单个 Map.Entry。我一直追踪到对数据库的 sql 调用的调用,但只能找到将返回的对象转换为 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 实现。您可以使用现有的实现之一,例如 AbstractMap.SimpleEntry :

Date date = new Date();
boolean value = true;

Map.Entry<Date, Boolean> entry =  new AbstractMap.SimpleEntry<>(date, value);
when(foo.getLastModifiedGid(any())).thenReturn(entry);

AbstractMap.SimpleImmutableEntry :

Map.Entry<Date, Boolean> entry =  new AbstractMap.SimpleImmutableEntry<>(date, value);

附带说明,java.util 中的日期类已过时,java.time 中的类应用于 Java 8+。具体来说,java.util.Date 替换为 java.time.Instant .

关于java - 从方法调用返回时模拟和处理 Map.Entry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697093/

相关文章:

python - Django 模型中的单元测试外键约束

java - 按升序对 Hashset 对象进行排序

java - 它如何使用流删除重复对象并从对象字段中减去值?

java - 将 TimeseriesChart 中的第二个时间序列转换为条形图

java - Assets @Android

java - Spring 3 独立应用程序不会将输出写入文件

c# - 如何在调用同一类中的另一个方法的单元测试中使用 Moq

gmock 可以用于 stub C 函数吗?

java - Drools - 在决策表中使用 "from"

java - 运行 maven 站点命令时创建的 "site"是什么?