Start learning about BDD here: https://en.wikipedia.org/wiki/Behavior-driven_development
The problem is that current stubbing api with canonical role of when word does not integrate nicely with //given //when //then comments.
It's because stubbing belongs to given component of the test and not to the when component of the test.
Hence BDDMockito class introduces an alias so that you stub method calls with given(Object) method.
Now it really nicely integrates with the given component of a BDD style test!
Here is how the test might look like:
import static org.mockito.BDDMockito.*;
Seller seller = mock(Seller.class);
Shop shop = new Shop(seller);
public void shouldBuyBread() throws Exception {
//given
given(seller.askForBread()).willReturn(new Bread());
//when
Goods goods = shop.buyBread();
//then
assertThat(goods, containBread());
}
Stubbing voids with throwables:
//given
willThrow(new RuntimeException("boo")).given(mock).foo();
//when
Result result = systemUnderTest.perform();
//then
assertEquals(failure, result);
For BDD style mock verification take a look at BDDMockito.Then in action:
person.ride(bike);
person.ride(bike);
then(person).should(times(2)).ride(bike);
then(person).shouldHaveNoMoreInteractions();
then(police).shouldHaveZeroInteractions();
It is also possible to do BDD style InOrder verification:
InOrder inOrder = inOrder(person);
person.drive(car);
person.ride(bike);
person.ride(bike);
then(person).should(inOrder).drive(car);
then(person).should(inOrder, times(2)).ride(bike);
One of the purposes of BDDMockito is also to show how to tailor the mocking syntax to a different programming style.
- Since:
- 1.8.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceSee originalOngoingStubbingstatic interfaceSee originalStubberstatic interfaceProvides fluent way of mock verification. -
Field Summary
Fields inherited from class org.mockito.Mockito
CALLS_REAL_METHODS, RETURNS_DEEP_STUBS, RETURNS_DEFAULTS, RETURNS_MOCKS, RETURNS_SELF, RETURNS_SMART_NULLS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> BDDMockito.BDDMyOngoingStubbing<T> given(T methodCall) see originalMockito.when(Object)static <T> BDDMockito.Then<T> then(T mock) Bdd style verification of mock behavior.static BDDMockito.BDDStubbersee originalMockito.doAnswer(Answer)static BDDMockito.BDDStubberwillAnswer(Answer<?> answer) see originalMockito.doAnswer(Answer)static BDDMockito.BDDStubbersee originalMockito.doCallRealMethod()static BDDMockito.BDDStubbersee originalMockito.doNothing()static BDDMockito.BDDStubberwillReturn(Object toBeReturned) see originalMockito.doReturn(Object)static BDDMockito.BDDStubberwillReturn(Object toBeReturned, Object... toBeReturnedNext) see originalMockito.doReturn(Object, Object...)static BDDMockito.BDDStubbersee originalMockito.doThrow(Class)static BDDMockito.BDDStubbersee originalMockito.doThrow(Class)static BDDMockito.BDDStubbersee originalMockito.doThrow(Throwable[])Methods inherited from class org.mockito.Mockito
after, atLeast, atLeastOnce, atMost, atMostOnce, calls, clearAllCaches, clearInvocations, description, doAnswer, doCallRealMethod, doNothing, doReturn, doReturn, doThrow, doThrow, doThrow, framework, ignoreStubs, inOrder, lenient, mock, mock, mock, mock, mock, mock, mock, mock, mockConstruction, mockConstruction, mockConstruction, mockConstruction, mockConstruction, mockConstruction, mockConstructionWithAnswer, mockingDetails, mockitoSession, mockStatic, mockStatic, mockStatic, mockStatic, never, only, reset, spy, spy, spy, timeout, times, validateMockitoUsage, verify, verify, verifyNoInteractions, verifyNoMoreInteractions, when, withSettingsMethods inherited from class org.mockito.ArgumentMatchers
any, any, anyBoolean, anyByte, anyChar, anyCollection, anyDouble, anyFloat, anyInt, anyIterable, anyList, anyLong, anyMap, anySet, anyShort, anyString, argThat, assertArg, assertArg, booleanThat, byteThat, charThat, contains, doubleThat, endsWith, eq, eq, eq, eq, eq, eq, eq, eq, eq, floatThat, intThat, isA, isNotNull, isNotNull, isNull, isNull, longThat, matches, matches, notNull, notNull, nullable, refEq, same, shortThat, startsWith
-
Constructor Details
-
BDDMockito
public BDDMockito()
-
-
Method Details
-
given
see originalMockito.when(Object)- Since:
- 1.8.0
-
then
Bdd style verification of mock behavior.person.ride(bike); person.ride(bike); then(person).should(times(2)).ride(bike);- Since:
- 1.10.0
- See Also:
-
willThrow
see originalMockito.doThrow(Throwable[])- Since:
- 2.1.0
-
willThrow
see originalMockito.doThrow(Class)- Since:
- 1.9.0
-
willThrow
public static BDDMockito.BDDStubber willThrow(Class<? extends Throwable> toBeThrown, Class<? extends Throwable>... throwableTypes) see originalMockito.doThrow(Class)- Since:
- 1.9.0
-
willAnswer
see originalMockito.doAnswer(Answer)- Since:
- 1.8.0
-
will
see originalMockito.doAnswer(Answer)- Since:
- 2.1.0
-
willDoNothing
see originalMockito.doNothing()- Since:
- 1.8.0
-
willReturn
see originalMockito.doReturn(Object)- Since:
- 1.8.0
-
willReturn
see originalMockito.doReturn(Object, Object...)- Since:
- 2.1.0
-
willCallRealMethod
see originalMockito.doCallRealMethod()- Since:
- 1.8.0
-