I’ve been looking into using EasyMock 3’s IMockBuilder as a means of generating partial mocks (I know partial mocking may suggest a design flaw, but I’m writing tests for old code). Presumably I can use the deprecated static EasyMock.createMock() methods to create beans in my Spring config, like this:
<bean id="myBean" class="org.easymock.EasyMock" factory-method="createMock">
<constructor-arg value="org.mypackage.MyClass.class" />
</bean>
When creating a partial mock using an IMockBuilder, I need to make several calls to addMockedMethod() in order to define the methods I want mocked. Is there a way I can do this in a Spring XML configuration file? Ideally I’d like all the dependencies of all my beans set by Spring, and don’t want to have to override them in my test cases in order to pass in mock objects created in this way.
Thanks
No, XML config isn’t capable of that sort of flexibility.
You have two options:
Write an implementation of
FactoryBeanwhich creates the mock, configures it, and returns the mock to Spring. See Customizing instantiation logic with the FactoryBean Interface.Use
@Configuration-style configuration in Java, instead of XML style configuration. This is the most flexible approach, and is generally better than XML config. See Java-based container configuration