在 mockito 中模拟参数化地图

我有一张看起来像这样的地图 Map<String, Class<? extends TypeA>> differentTypesOfA;
我有不同的 TypeA 子类

Class TypeB implements TypeA {..}
Class TypeC implements TypeA {..} 等等

我把它们放到地图某处 differentTypesOfA.put("TypeB",TypeB.class)

现在我正在尝试用

@Mock Map<String, Class<? extends TypeA>> differentTypesOfAMock; 然后
.. setup() { when(differentTypesOfAMock.get(anyString()).thenReturn(TypeB.class);
}

这当然行不通,但我也想不出一个模拟这张地图的好方法。有人可以帮忙吗?

stack overflow mocking a parametrized map in mockito
原文答案

答案:

作者头像

如果您只想验证 Map.get() 方法,那么您可以使用真实的 Map,并且可以创建它的间谍。然后您可以将间谍而不是原始对象传递给测试代码,然后您可以检查对地图的所有调用。 (见 http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#13 )。您不必在间谍上存根任何东西。一个很好的例子在这里(在问题中): Is it a right case for Mockito spy?