1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/* 2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors 3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License. 4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito; 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.stubbing.Answer; 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.stubbing.OngoingStubbing; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.stubbing.Stubber; 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/** 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Behavior Driven Development style of writing tests uses <b>//given //when //then</b> comments as fundamental parts of your test methods. 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This is exactly how we write our tests and we warmly encourage you to do so! 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Start learning about BDD here: <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">http://en.wikipedia.org/wiki/Behavior_Driven_Development</a> 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * The problem is that current stubbing api with canonical role of <b>when</b> word does not integrate nicely with <b>//given //when //then</b> comments. 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * It's because stubbing belongs to <b>given</b> component of the test and not to the <b>when</b> component of the test. 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Hence {@link BDDMockito} class introduces an alias so that you stub method calls with {@link BDDMockito#given(Object)} method. 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Now it really nicely integrates with the <b>given</b> component of a BDD style test! 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Here is how the test might look like: 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * import static org.mockito.BDDMockito.*; 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Seller seller = mock(Seller.class); 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Shop shop = new Shop(seller); 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * public void shouldBuyBread() throws Exception { 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //given 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * given(seller.askForBread()).willReturn(new Bread()); 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //when 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Goods goods = shop.buyBread(); 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //then 37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * assertThat(goods, containBread()); 38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * } 39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Stubbing voids with throwables: 42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //given 44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * willThrow(new RuntimeException("boo")).given(mock).foo(); 45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //when 47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Result result = systemUnderTest.perform(); 48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //then 50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * assertEquals(failure, result); 51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p> 53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * One of the purposes of BDDMockito is also to show how to tailor the mocking syntax to a different programming style. 54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@SuppressWarnings("unchecked") 58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class BDDMockito extends Mockito { 59e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 60e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 61e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing} 62e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 63e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 64e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static interface BDDMyOngoingStubbing<T> { 65e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 66e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 67e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#thenAnswer(Answer)} 68e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 69e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 70e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> willAnswer(Answer<?> answer); 71e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 72e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 73e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#then(Answer)} 74e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 75e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 76e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> will(Answer<?> answer); 77e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 78e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 79e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#thenReturn(Object)} 80e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 81e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 82e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> willReturn(T value); 83e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 84e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 85e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#thenReturn(Object, Object[])} 86e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 87e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 88e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> willReturn(T value, T... values); 89e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 90e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 91e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#thenThrow(Throwable...)} 92e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 93e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 94e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> willThrow(Throwable... throwables); 95e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 96e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 97e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#thenThrow(Class[])} 98e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 99e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 100e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> willThrow(Class<? extends Throwable>... throwableClasses); 101e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 102e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 103e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#thenCallRealMethod()} 104e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 105e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 106e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDMyOngoingStubbing<T> willCallRealMethod(); 107e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 108e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 109e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link OngoingStubbing#getMock()} 110e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 111e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 112e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson <M> M getMock(); 113e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 114e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 115e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static class BDDOngoingStubbingImpl<T> implements BDDMyOngoingStubbing<T> { 116e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 117e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final OngoingStubbing<T> mockitoOngoingStubbing; 118e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 119e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDOngoingStubbingImpl(OngoingStubbing<T> ongoingStubbing) { 120e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.mockitoOngoingStubbing = ongoingStubbing; 121e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 122e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 123e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 124e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDMyOngoingStubbing#willAnswer(Answer) 125e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 126e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> willAnswer(Answer<?> answer) { 127e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenAnswer(answer)); 128e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 129e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 130e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 131e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDMyOngoingStubbing#will(Answer) 132e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 133e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> will(Answer<?> answer) { 134e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.then(answer)); 135e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 136e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 137e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 138e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDMyOngoingStubbing#willReturn(java.lang.Object) 139e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 140e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> willReturn(T value) { 141e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenReturn(value)); 142e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 143e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 144e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 145e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDMyOngoingStubbing#willReturn(java.lang.Object, T[]) 146e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 147e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> willReturn(T value, T... values) { 148e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenReturn(value, values)); 149e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 150e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 151e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 152e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDMyOngoingStubbing#willThrow(java.lang.Throwable[]) 153e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 154e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> willThrow(Throwable... throwables) { 155e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenThrow(throwables)); 156e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 157e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 158e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDMyOngoingStubbing#willThrow(java.lang.Class[]) 159e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 160e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> willThrow(Class<? extends Throwable>... throwableClasses) { 161e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenThrow(throwableClasses)); 162e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 163e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 164e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDMyOngoingStubbing<T> willCallRealMethod() { 165e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenCallRealMethod()); 166e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 167e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 168e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public <M> M getMock() { 169e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return (M) mockitoOngoingStubbing.getMock(); 170e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 171e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 172e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 173e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 174e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#when(Object)} 175e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 176e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 177e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static <T> BDDMyOngoingStubbing<T> given(T methodCall) { 178e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDOngoingStubbingImpl<T>(Mockito.when(methodCall)); 179e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 180e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 181e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 182e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber} 183e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 184e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 185e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static interface BDDStubber { 186e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 187e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#doAnswer(Answer)} 188e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 189e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 190e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDStubber willAnswer(Answer answer); 191e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 192e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 193e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#doNothing()} 194e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 195e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 196e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDStubber willNothing(); 197e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 198e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 199e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#doReturn(Object)} 200e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 201e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 202e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDStubber willReturn(Object toBeReturned); 203e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 204e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 205e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#doThrow(Throwable)} 206e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 207e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 208e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDStubber willThrow(Throwable toBeThrown); 209e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 210e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 211e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#doThrow(Class)} 212e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 213e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 214e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDStubber willThrow(Class<? extends Throwable> toBeThrown); 215e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 216e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 217e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#doCallRealMethod()} 218e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 219e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 220e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson BDDStubber willCallRealMethod(); 221e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 222e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 223e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See original {@link Stubber#when(Object)} 224e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 225e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 226e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson <T> T given(T mock); 227e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 228e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 229e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static class BDDStubberImpl implements BDDStubber { 230e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 231e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson private final Stubber mockitoStubber; 232e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 233e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubberImpl(Stubber mockitoStubber) { 234e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.mockitoStubber = mockitoStubber; 235e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 236e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 237e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 238e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#given(java.lang.Object) 239e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 240e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public <T> T given(T mock) { 241e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return mockitoStubber.when(mock); 242e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 243e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 244e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 245e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#willAnswer(Answer) 246e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 247e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubber willAnswer(Answer answer) { 248e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(mockitoStubber.doAnswer(answer)); 249e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 250e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 251e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 252e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#willNothing() 253e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 254e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubber willNothing() { 255e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(mockitoStubber.doNothing()); 256e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 257e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 258e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 259e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#willReturn(java.lang.Object) 260e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 261e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubber willReturn(Object toBeReturned) { 262e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(mockitoStubber.doReturn(toBeReturned)); 263e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 264e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 265e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 266e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#willThrow(java.lang.Throwable) 267e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 268e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubber willThrow(Throwable toBeThrown) { 269e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(mockitoStubber.doThrow(toBeThrown)); 270e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 271e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 272e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 273e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#willThrow(Class) 274e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 275e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubber willThrow(Class<? extends Throwable> toBeThrown) { 276e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(mockitoStubber.doThrow(toBeThrown)); 277e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 278e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 279e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /* (non-Javadoc) 280e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @see BDDMockito.BDDStubber#willCallRealMethod() 281e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 282e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public BDDStubber willCallRealMethod() { 283e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(mockitoStubber.doCallRealMethod()); 284e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 285e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 286e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 287e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 288e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#doThrow(Throwable)} 289e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 290e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 291e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static BDDStubber willThrow(Throwable toBeThrown) { 292e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(Mockito.doThrow(toBeThrown)); 293e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 294e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 295e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 296e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#doThrow(Throwable)} 297e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.9.0 298e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 299e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static BDDStubber willThrow(Class<? extends Throwable> toBeThrown) { 300e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(Mockito.doThrow(toBeThrown)); 301e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 302e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 303e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 304e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#doAnswer(Answer)} 305e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 306e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 307e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static BDDStubber willAnswer(Answer answer) { 308e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(Mockito.doAnswer(answer)); 309e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 310e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 311e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 312e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#doNothing()} 313e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 314e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 315e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static BDDStubber willDoNothing() { 316e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(Mockito.doNothing()); 317e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 318e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 319e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 320e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#doReturn(Object)} 321e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 322e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 323e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static BDDStubber willReturn(Object toBeReturned) { 324e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(Mockito.doReturn(toBeReturned)); 325e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 326e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 327e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 328e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * see original {@link Mockito#doCallRealMethod()} 329e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @since 1.8.0 330e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 331e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public static BDDStubber willCallRealMethod() { 332e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return new BDDStubberImpl(Mockito.doCallRealMethod()); 333e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 334e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson} 335