我試圖驗證具有以下簽名的方法被稱爲:的Mockito anyMapOf嵌套泛型
public void process(Map<String, Set<String>> data) {
...
}
嵌套的參數設置導致了我的困難。我可以得到它,象這樣的任何()匹配正確驗證:
verify(dataProcessor).process(Matchers.<Map<String, Set<String>>> any());
如Mockito: Verifying with generic parameters描述雖然煩人,如果我做Matchers.any的直接靜態導入它不工作和叫它:
verify(dataProcessor).process(<Map<String, Set<String>>> any())
但anyMapOf(clazz所clazz所),似乎在這種情況下,更合適的匹配。既然你不能Set.class,我不知道你會怎麼做。下面,由於缺乏通用不起作用:
verify(dataProcessor).process(anyMapOf(String.class, Set.class));
是否可以驗證與anyMapOf這種情況下還是應該堅持匹配器。 <> any()?
您的方法簽名已經約束了方法使用的參數類型,爲什麼不使用'any()'?代碼不會用'Map>'調用你的方法,甚至不會編譯... –
fge
@fge Java類型推斷不會根據'any'中提供的參數類型推斷'any'過程「,因爲」過程「可能有重載和/或自己的類型參數。它會在返回值和字段中這樣做,因爲該類型已經明確定義爲返回值類型或字段類型。這些都在[極其不透明的JLS 15.12.2](http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2)中。 –