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.stubbing; 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Mockito; 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.progress.IOngoingStubbing; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/** 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Stubs a method call with return value or an exception. E.g: 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod()).toReturn(10); 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //you can use flexible argument matchers, e.g: 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod(<b>anyString()</b>)).toReturn(10); 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //setting exception to be thrown: 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod("some arg")).toThrow(new RuntimeException()); 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //you can stub with different behavior for consecutive method calls. 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * //Last stubbing (e.g: toReturn("foo")) determines the behavior for further consecutive calls. 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod("some arg")) 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * .toThrow(new RuntimeException()) 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * .toReturn("foo"); 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito#stub} 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic interface DeprecatedOngoingStubbing<T> extends IOngoingStubbing { 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Set a return value for the stubbed method. E.g: 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod()).toReturn(10); 38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito#stub} 41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @param value return value 43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return iOngoingStubbing object that allows stubbing consecutive calls 45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson DeprecatedOngoingStubbing<T> toReturn(T value); 47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Set a Throwable to be thrown when the stubbed method is called. E.g: 50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod()).toThrow(new RuntimeException()); 52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * If throwable is a checked exception then it has to 55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * match one of the checked exceptions of method signature. 56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See examples in javadoc for {@link Mockito#stub} 58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 59e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @param throwable to be thrown on method invocation 60e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 61e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return iOngoingStubbing object that allows stubbing consecutive calls 62e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 63e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson DeprecatedOngoingStubbing<T> toThrow(Throwable throwable); 64e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 65e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson /** 66e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Set a generic Answer for the stubbed method. E.g: 67e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <pre class="code"><code class="java"> 68e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * stub(mock.someMethod(10)).toAnswer(new Answer<Integer>() { 69e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * public Integer answer(InvocationOnMock invocation) throws Throwable { 70e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * return (Integer) invocation.getArguments()[0]; 71e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * } 72e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * } 73e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * </code></pre> 74e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 75e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @param answer the custom answer to execute. 76e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * 77e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * @return iOngoingStubbing object that allows stubbing consecutive calls 78e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 79e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson DeprecatedOngoingStubbing<T> toAnswer(Answer<?> answer); 80e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}