簡體   English   中英

Mockito間諜對象,使用any()作為參數進行驗證

[英]Mockito spy object, verify with any() as argument

我有一個簡單的單元測試

Map<String, String> spyMap = spy(Map.class); 
spyMap.put("a", "A");
spyMap.put("b", "B");

InOrder inOrder = inOrder(spyMap);

inOrder.verify(spyMap).put(any(), any());
inOrder.verify(spyMap).put(any(), any());

但這會引發錯誤。 以下作品:

inOrder.verify(spyMap).put("a", "A");
inOrder.verify(spyMap).put("b", "B");

所以我只能測試精確的字符串匹配? 這似乎限制了我。 我的測試方法實際上生成了一個隨機字符串,所以我不知道究竟將插入到地圖中的是什么。 我嘗試使用ArgumentCaptor方法,但這也不起作用。

Map<String, String> spyMap = spy(Map.class); 
spyMap.put("a", "A");
spyMap.put("b", "B");

ArgumentCaptor<String> arg1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> arg2 = ArgumentCaptor.forClass(String.class);

verify(spyMap).put(arg1.capture(), arg2.capture());

這里的問題不是any()匹配器,事實上你調用put兩次並試圖驗證一個調用。 相反,您應該使用times VerificationMode

inOrder.verify(spyMap, times(2)).put(any(), any());
// Here ---------------^

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM