| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| |
| package org.mockitousage.strictness; |
| |
| import org.assertj.core.api.ThrowableAssert; |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.mockito.Mock; |
| import org.mockito.exceptions.misusing.PotentialStubbingProblem; |
| import org.mockito.junit.MockitoJUnit; |
| import org.mockito.junit.MockitoRule; |
| import org.mockito.quality.Strictness; |
| import org.mockitousage.IMethods; |
| |
| import static org.assertj.core.api.Assertions.assertThatThrownBy; |
| import static org.mockito.Mockito.lenient; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.when; |
| import static org.mockito.Mockito.withSettings; |
| |
| public class StrictnessWhenRuleStrictnessIsUpdatedTest { |
| |
| @Mock IMethods mock; |
| @Rule public MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.LENIENT); |
| |
| @Test |
| public void strictness_per_mock() { |
| //when |
| rule.strictness(Strictness.STRICT_STUBS); |
| |
| //then previous mock is strict: |
| when(mock.simpleMethod(1)).thenReturn("1"); |
| assertThatThrownBy(new ThrowableAssert.ThrowingCallable() { |
| @Override |
| public void call() throws Throwable { |
| mock.simpleMethod(2); |
| } |
| }).isInstanceOf(PotentialStubbingProblem.class); |
| |
| //but the new mock is lenient, even though the rule is not: |
| final IMethods lenientMock = mock(IMethods.class, withSettings().lenient()); |
| when(lenientMock.simpleMethod(1)).thenReturn("1"); |
| lenientMock.simpleMethod(100); |
| } |
| |
| @Test |
| public void strictness_per_stubbing() { |
| //when |
| rule.strictness(Strictness.STRICT_STUBS); |
| |
| //then previous mock is strict: |
| when(mock.simpleMethod(1)).thenReturn("1"); |
| assertThatThrownBy(new ThrowableAssert.ThrowingCallable() { |
| @Override |
| public void call() throws Throwable { |
| mock.simpleMethod(2); |
| } |
| }).isInstanceOf(PotentialStubbingProblem.class); |
| |
| //but the new mock is lenient, even though the rule is not: |
| lenient().when(mock.simpleMethod(1)).thenReturn("1"); |
| mock.simpleMethod(100); |
| } |
| } |