模拟对象运行不同的void方法

问题描述:

我正在尝试为我已实现的方法编写测试用例,该方法又使用第三方缓存提供程序。 我面临的问题是缓存是异步的,这使得它很难测试,因为放入缓存的元素不会立即在缓存中。模拟对象运行不同的void方法

我的解决方案是使用PowerMockito模拟缓存。 我可以使它始终返回相同的对象,但最好我希望它将对象放置在放置的HashMap上,并在get操作中从相同的地图获取它。 GET操作应该是非常简单的,是这样的:

final Map<String, Object> cacheMap = new HashMap<>(); 
    Answer<Object> getFunction = invocation -> 
      cacheMap.get(invocation.getArgument(0)); 
    when(mockCache.get(any())).thenAnswer(getFunction); 

但我不知道如何嘲笑了类似的呼吁无效方法mockCache.put(any(), any()) 它ATLEAST好像你不能嘲笑无效的功能比其他任何调用真正的方法或者什么都不做。

我认为您正在寻找拦截原始调用并将其重新路由到不同的实现。看看this答案为解释如何做到这一点。