• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2016 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockito.internal.stubbing.defaultanswers;
6 
7 import java.io.Serializable;
8 
9 import org.mockito.internal.util.MockUtil;
10 import org.mockito.invocation.InvocationOnMock;
11 import org.mockito.stubbing.Answer;
12 
13 public class TriesToReturnSelf implements Answer<Object>, Serializable {
14 
15     private final ReturnsEmptyValues defaultReturn = new ReturnsEmptyValues();
16 
17     @Override
answer(InvocationOnMock invocation)18     public Object answer(InvocationOnMock invocation) throws Throwable {
19         Class<?> methodReturnType = invocation.getMethod().getReturnType();
20         Object mock = invocation.getMock();
21         Class<?> mockType = MockUtil.getMockHandler(mock).getMockSettings().getTypeToMock();
22 
23         if (methodReturnType.isAssignableFrom(mockType)) {
24             return invocation.getMock();
25         }
26 
27         return defaultReturn.returnValueFor(methodReturnType);
28     }
29 }
30