Я пытаюсь заставить Spring вставлять макеты EasyMock в мои юнит-тесты.
В моем applicationContext.xml у меня есть это:
<bean id="mockService" class="org.easymock.EasyMock" factory-method="createMock" name="MockService">
<constructor-arg index="0" value="my.project.Service"/>
</bean>
В моем модульном тесте у меня есть это:
@Autowired
@Qualifier("mockService")
private Service service;
public void testGetFoo() {
Foo foo = new Foo();
expect(service.findFoo()).andReturn(foo);
replay(service); // <-- This is line 45, which causes the exception
// Assertions go here...
}
Когда я пытаюсь запустить свой тест, я получаю следующую трассировку стека:
java.lang.ClassCastException: org.springframework.aop.framework.JdkDynamicAopProxy
at org.easymock.EasyMock.getControl(EasyMock.java:1330)
at org.easymock.EasyMock.replay(EasyMock.java:1279)
at TestFooBar.testGetFoo(TestVodServiceLocator.java:45)
Я довольно новичок в Spring и EasyMock, но мне кажется, что ошибка вызвана тем, что EasyMock пытается вызвать метод, который считается экземпляром EasyMock, но на самом деле это динамический прокси, созданный Весна. Насколько я понимаю, динамические прокси реализуют только методы, определенные в интерфейсе, в данном случае это интерфейс для Service.
Что я не понимаю, так это то, что из того, что я прочитал (также здесь ), то, чего я пытаюсь достичь, по крайней мере, представляется возможным.
Итак, мой вопрос: что я не делаю или что я делаю неправильно?