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