我的代码看起来像这样:
for (Map.Entry<Integer, Action> entry : availableActions.entrySet()) {
...
}
Run Code Online (Sandbox Code Playgroud)
我试图像这样嘲笑它:
Map mockAvailableActions = mock(Map.class, Mockito.RETURNS_DEEP_STUBS);
mockAvailableActions.put(new Integer(1), mockAction);
Run Code Online (Sandbox Code Playgroud)
我认为这就足够了.但是entrySet是空的.所以我补充说:
when(mockAvailableActions.entrySet().iterator()).thenReturn(mockIterator);
when(mockIterator.next()).thenReturn(mockAction);
Run Code Online (Sandbox Code Playgroud)
仍然是entrySet为空.我究竟做错了什么?感谢您的任何意见!
cod*_*box 23
也许我错过了什么,但为什么不这样做:
Map.Entry<Integer, Action> entrySet = <whatever you want it to return>
Map mockAvailableActions = mock(Map.class);
when(mockAvailableActions.entrySet()).thenReturn(entrySet);
Run Code Online (Sandbox Code Playgroud)
还要考虑你是否真的需要一个模拟地图,不是真正的人做这个工作吗?模拟通常用于替换您不希望参与单元测试的其他代码片段,Map是核心Java语言的一部分,通常不会被模拟.