Как EasyMock вызов метода, который возвращает подстановочный знак?

Мы переходим на Spring 3.0 и сталкиваемся с проблемами с пересечением Spring 3.0, EasyMock и Java Generics.

В одном месте мы издеваемся над Spring 3.0 AbstractBeanFactory, в частности, этот метод:

public Class<?> getType(String name) throws NoSuchBeanDefinitionException { ... }

В более ранних версиях Spring это возвращает не общий, и все было хорошо. Вместе с общим, мы сталкиваемся с проблемой:

expect(mockBeanFactory.getType(CLASS_NAME)).andReturn(SOME_CLASS);

Поскольку getType возвращает Class<?>, andReturn требует Class<?> в качестве параметра, который просто не работает должным образом.

Известно ли это обходное решение?

Ответы

Ответ 1

Я столкнулся с такой проблемой, как раньше, с Mockito. Я не знаю, почему это происходит. Вы можете применить аргумент expect (..) к неэквивалентному типу класса, ala

expect((Class) mockBeanFactory.getType(CLASS_NAME)).andReturn(SOME_CLASS);

Тогда у вас будет только предупреждение, которое вы можете подавить, если хотите. Не очень изящное решение; Я собираюсь потратить еще несколько минут на это.

Ответ 2

Проще всего избежать кастинга и предупреждений - использовать expectLastCall() вместо expect(..) (см. мой ответ на аналогичный вопрос).

Итак, в этом случае:

mockBeanFactory.getType(CLASS_NAME);
expectLastCall().andReturn(SOME_CLASS);