Why I dislike mocks: Difference between revisions
No edit summary |
mNo edit summary |
||
Line 24: | Line 24: | ||
Sorting out problems like this seems to be a complete waste of time. My preference would be to use a [http://www.martinfowler.com/bliki/TestDouble.html stub or a fake object]. | Sorting out problems like this seems to be a complete waste of time. My preference would be to use a [http://www.martinfowler.com/bliki/TestDouble.html stub or a fake object]. | ||
[[Category:Java]] |
Latest revision as of 02:34, 1 October 2007
Mock's are brittle and force your tests to assume an implementation of the code you are testing. Today, the unit test broke because I added this line of code:
LOG.debug("Received Message " + responseMessage.getJMSCorrelationID());
The reported failure:
Testcase: testRequestSendsMessageAndWaitsForResponse(JmsServiceImplUnitTest): Caused an ERROR Unexpected method call getJMSCorrelationID(): java.lang.AssertionError: Unexpected method call getJMSCorrelationID(): at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:29) at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:45) at $Proxy13.getJMSCorrelationID(Unknown Source) at JmsServiceImpl.makeRequest(JmsServiceImpl.java:48) at JmsServiceImplUnitTest.testRequestSendsMessageAndWaitsForResponse(JmsServiceImplUnitTest.java:56)
The fix:
expect(sendMessage.getJMSCorrelationID()).andReturn("JMS1").anyTimes();
Sorting out problems like this seems to be a complete waste of time. My preference would be to use a stub or a fake object.