Как 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);