/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito; import org.mockito.internal.stubbing.answers.CallsRealMethods; import org.mockito.internal.stubbing.defaultanswers.TriesToReturnSelf; import org.mockito.internal.stubbing.defaultanswers.GloballyConfiguredAnswer; import org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs; import org.mockito.internal.stubbing.defaultanswers.ReturnsMocks; import org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; /** * Enumeration of pre-configured mock answers * <p> * You can use it to pass extra parameters to @Mock annotation, see more info here: {@link Mock} * <p> * Example: * <pre class="code"><code class="java"> * @Mock(answer = RETURNS_DEEP_STUBS) UserProvider userProvider; * </code></pre> * <b>This is not the full list</b> of Answers available in Mockito. Some interesting answers can be found in org.mockito.stubbing.answers package. */ public enum Answers implements Answer<Object>{ /** * The default configured answer of every mock. * * <p>Please see the {@link org.mockito.Mockito#RETURNS_DEFAULTS} documentation for more details.</p> * * @see org.mockito.Mockito#RETURNS_DEFAULTS */ RETURNS_DEFAULTS(new GloballyConfiguredAnswer()), /** * An answer that returns smart-nulls. * * <p>Please see the {@link org.mockito.Mockito#RETURNS_SMART_NULLS} documentation for more details.</p> * * @see org.mockito.Mockito#RETURNS_SMART_NULLS */ RETURNS_SMART_NULLS(new ReturnsSmartNulls()), /** * An answer that returns <strong>mocks</strong> (not stubs). * * <p>Please see the {@link org.mockito.Mockito#RETURNS_MOCKS} documentation for more details.</p> * * @see org.mockito.Mockito#RETURNS_MOCKS */ RETURNS_MOCKS(new ReturnsMocks()), /** * An answer that returns <strong>deep stubs</strong> (not mocks). * * <p>Please see the {@link org.mockito.Mockito#RETURNS_DEEP_STUBS} documentation for more details.</p> * * @see org.mockito.Mockito#RETURNS_DEEP_STUBS */ RETURNS_DEEP_STUBS(new ReturnsDeepStubs()), /** * An answer that calls the real methods (used for partial mocks). * * <p>Please see the {@link org.mockito.Mockito#CALLS_REAL_METHODS} documentation for more details.</p> * * @see org.mockito.Mockito#CALLS_REAL_METHODS */ CALLS_REAL_METHODS(new CallsRealMethods()), /** * An answer that tries to return itself. This is useful for mocking {@code Builders}. * * <p>Please see the {@link org.mockito.Mockito#RETURNS_SELF} documentation for more details.</p> * * @see org.mockito.Mockito#RETURNS_SELF */ RETURNS_SELF(new TriesToReturnSelf()) ; private final Answer<Object> implementation; Answers(Answer<Object> implementation) { this.implementation = implementation; } /** * @deprecated as of 2.1.0 Use the enum-constant directly, instead of this getter. This method will be removed in a future release<br> * E.g. instead of <code>Answers.CALLS_REAL_METHODS.get()</code> use <code>Answers.CALLS_REAL_METHODS</code> . */ @Deprecated public Answer<Object> get() { return this; } public Object answer(InvocationOnMock invocation) throws Throwable { return implementation.answer(invocation); } }