diff --git a/src/main/java/org/mockito/internal/handler/MockHandlerImpl.java b/src/main/java/org/mockito/internal/handler/MockHandlerImpl.java index 3d81b362c5..d5799e2725 100644 --- a/src/main/java/org/mockito/internal/handler/MockHandlerImpl.java +++ b/src/main/java/org/mockito/internal/handler/MockHandlerImpl.java @@ -14,6 +14,7 @@ import org.mockito.internal.stubbing.OngoingStubbingImpl; import org.mockito.internal.stubbing.StubbedInvocationMatcher; import org.mockito.internal.stubbing.answers.DefaultAnswerValidator; +import org.mockito.internal.util.MockUtil; import org.mockito.internal.verification.MockAwareVerificationMode; import org.mockito.internal.verification.VerificationDataImpl; import org.mockito.invocation.Invocation; @@ -65,7 +66,7 @@ public Object handle(Invocation invocation) throws Throwable { if (verificationMode != null) { // We need to check if verification was started on the correct mock // - see VerifyingWithAnExtraCallToADifferentMockTest (bug 138) - if (((MockAwareVerificationMode) verificationMode).getMock() == invocation.getMock()) { + if (MockUtil.areSameMocks(((MockAwareVerificationMode) verificationMode).getMock(), invocation.getMock())) { VerificationDataImpl data = new VerificationDataImpl(invocationContainer, invocationMatcher); verificationMode.verify(data); diff --git a/src/main/java/org/mockito/internal/util/MockUtil.java b/src/main/java/org/mockito/internal/util/MockUtil.java index 2927d6aabf..65ef1bc85b 100644 --- a/src/main/java/org/mockito/internal/util/MockUtil.java +++ b/src/main/java/org/mockito/internal/util/MockUtil.java @@ -120,6 +120,10 @@ private static Object resolve(Object mock) { return mock; } + public static boolean areSameMocks(Object mockA, Object mockB){ + return mockA == mockB || resolve(mockA) == resolve(mockB); + } + public static MockName getMockName(Object mock) { return getMockHandler(mock).getMockSettings().getMockName(); }