| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockitousage.verification; |
| |
| import org.junit.Test; |
| import org.mockito.Mock; |
| import org.mockito.exceptions.base.MockitoAssertionError; |
| import org.mockito.internal.invocation.InvocationMatcher; |
| import org.mockito.internal.verification.api.VerificationData; |
| import org.mockito.invocation.Invocation; |
| import org.mockito.verification.VerificationMode; |
| import org.mockitousage.IMethods; |
| import org.mockitoutil.TestBase; |
| |
| import static junit.framework.TestCase.fail; |
| import static org.mockito.Mockito.verify; |
| |
| public class CustomVerificationTest extends TestBase { |
| |
| @Mock IMethods mock; |
| |
| @Test |
| public void custom_verification_with_old_api() { |
| //given: |
| mock.simpleMethod("a", 10); |
| |
| //expect: |
| verify(mock, ignoreParametersUsingOldApi()).simpleMethod(); |
| |
| try { |
| verify(mock, ignoreParametersUsingOldApi()).otherMethod(); |
| fail(); |
| } catch (MockitoAssertionError e) {} |
| } |
| |
| //Old api still supported, see https://github.com/mockito/mockito/issues/730 |
| private VerificationMode ignoreParametersUsingOldApi() { |
| return new VerificationMode() { |
| public void verify(VerificationData data) { |
| //use old api |
| InvocationMatcher target = data.getWanted(); |
| |
| //sanity check the new api |
| if (data.getTarget() != target) { |
| throw new RuntimeException("Sanity check"); |
| } |
| |
| //look for the relevant invocation and exit if found |
| for (Invocation invocation : data.getAllInvocations()) { |
| if (target.getInvocation().getMethod().getName().equals(invocation.getMethod().getName())) { |
| return; |
| } |
| } |
| |
| //verification failed! |
| throw new MockitoAssertionError("Expected method with name: " + target + " not found in:\n" + data.getAllInvocations()); |
| } |
| public VerificationMode description(String description) { |
| return this; |
| } |
| }; |
| } |
| } |