Как создать захват аргумента для Map?
У меня есть код, который следует следующей схеме:
import java.util.HashMap;
import java.util.Map;
public class CompoundClass {
public CompoundClass (String a, String b){
this.a = a;
this.b = b;
}
public String a;
public String b;
}
public class SubClass {
public void doSomeThingSubClass(Map<String, CompoundClass> mapSb) {
...
}
}
public class Example {
public SubClass sb;
public Example(SubClass sb) {
this.sb = sb;
}
public void doSomeThing () {
Map<String, CompoundClass> mapSb = new HashMap<>();
mapSb.put("x", new CompoundClass("aa","bb"));
sb.doSomeThingSubClass(mapSb);
}
}
И я хочу проверить, был ли вызван метод doSomethingSubClass (mapSb), в результате чего я должен иметь возможность проверить, с каким аргументом он вызывался. Для этого у меня есть следующий юнит-тест:
@Test
void TestDoSomehing(){
SubClass sb = mock(SubClass.class);
Example ex = new Example(sb);
ArgumentCaptor<Map<String, CompoundClass>> argCaptor = ArgumentCaptor.forClass(Map<String, CompoundClass>.class);
ex.doSomeThing();
verify(sb).doSomeThingSubClass(argCaptor.capture());
System.out(argCaptor.getValue().get('x').a);
}
Проблема в том, что приведенная выше инициализация argCaptor выдает следующее сообщение об ошибке: «Невозможно выбрать из параметризованного типа». Таким образом, вопрос заключается в том, как правильно объявить инициализацию объекта захвата аргумента для объекта карты, такого как Map? Заранее спасибо!