blob: 592cca9949d6cd59aa30c15b49484202c1460cf5 [file] [log] [blame]
/*
* 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);
}
}