単体テストで EasyMock モックを挿入するように Spring を取得しようとしています。
私の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のインスタンスであると想定しているものでメソッドを呼び出そうとしたためにエラーが発生したようですが、実際にはSpringによって作成された動的プロキシです。私が理解しているように、動的プロキシはインターフェイスで定義されたメソッドのみを実装します。この場合は、サービスのインターフェイスです。
私が理解していないのは、私が読んだこと(ここでも)から、少なくとも達成しようとしていることは可能であるように思われるということです。
私の質問は、私がしていないこと、または間違っていることは何ですか?