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&lt;Integer&gt;() {
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}