Подтвердить что ты не робот

Mockito. Параметр метода проверки является классом paticular

У меня есть метод:

void putObject(<T extends BaseEntity> param)

Есть ли какой-то тест, где я издеваюсь над этим методом, но мне интересно, как проверить, вызван ли метод с параметром определенного класса? Пытался сделать это таким образом:

verify(foo).putObject((SomeClass)anyObject());
------
verify(foo).putObject(any(SomeClass.class));
------
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor
            .forClass(SomeClass.class);
verify(foo).putObject(parametr);

Выполняет только второй вариант с any(), но не имеет параметра t check class of. Итак, если можно проверить, что метод получает какой-либо объект определенного класса?

4b9b3361

Ответ 1

User Matcher документация isA().

public static <T> T isA(java.lang.Class<T> clazz)

Это решит вашу проблему.

verify(foo).putObject(any(),isA(SomeClass.class));

Ответ 2

На самом деле вы можете проверить с помощью ArgumentCaptor.

ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor
            .forClass(SomeClass.class);
verify(foo).putObject(parameterCaptor.capture());

SomeClass instance = parameterCaptor.getValue();
// check intance.getX()
// check instance.getY()