2017-10-19 55 views
0

我正在嘗試爲我已實現的方法編寫測試用例,該方法又使用第三方緩存提供程序。 我面臨的問題是緩存是異步的,這使得它很難測試,因爲放入緩存的元素不會立即在緩存中。模擬對象運行不同的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好像你不能嘲笑無效的功能比其他任何調用真正的方法或者什麼都不做。

回答

1

我認爲您正在尋找攔截原始調用並將其重新路由到不同的實現。看看this答案爲解釋如何做到這一點。

相關問題