Я получаю исключение classcast, используя следующий фрагмент кода в тестовом примере.
Employee employee1= new Employee();
Employee employee2= new Employee();
Employee employee3= new Employee();
int id=1234;
when(employee1.getID()).thenReturn(id);
when(employee2.getID()).thenReturn(id);
when(employee3.getID()).thenReturn(id);
Я хочу обобщить это как
when((((Employee)Matchers.any(Employee.class)).getID())).thenReturn(id);
Я делаю что-то не так?
java.lang.ClassCastException: org.hamcrest.core.IsInstanceOf cannot be cast to com.site.model.Employee
Ответ 1 · рейтинг 2 · Nikos T
Привет, я знаю, что это очень старый вопрос, однако сегодня я сам столкнулся с этой же проблемой.
В любом случае, это связано с тем, как hamcrest обрабатывает Matchers. Я в основном не возвращаю данный тип, а обертку вокруг него.
Самый простой способ исправить это - использовать любой из mockito, а не hamcrest, например.
when((((Employee)org.mockito.Matchers.any(Employee.class)).getID())).thenReturn(id);
Дополнительные сведения см. в этом ответе: сравнение с сопоставлениями mockito и hamcrest
Надеюсь, это поможет любому, кто спотыкается об это;)
Ответ 2 · рейтинг 1 · Steve C
Если вы обнаружите, что вам нужно приведение типов при использовании Mockito, то у вас обычно что-то не так.
Я думаю, вы пытаетесь сделать что-то вроде:
Employee employee = Mockito.mock(Employee.class);
when(employee.getId()).thenReturn(id);