package ca.uhn.fhir.rest.client; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.hl7.fhir.instance.model.api.IBaseBundle; import org.junit.AfterClass; import org.junit.Test; import org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs; import org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls; import ca.uhn.fhir.model.dstu2.resource.Bundle; import ca.uhn.fhir.model.dstu2.resource.Condition; import ca.uhn.fhir.rest.gclient.ICriterion; import ca.uhn.fhir.rest.gclient.IQuery; import ca.uhn.fhir.util.TestUtil; public class ClientMockingTest { @AfterClass public static void afterClassClearContext() { TestUtil.clearAllStaticFieldsForUnitTest(); } @SuppressWarnings("unchecked") @Test public void testMockingDeepStubs() { IGenericClient client = mock(IGenericClient.class, new ReturnsDeepStubs()); // System.out.println(stub.getClass()); // System.out.println(stub.getClass()); Bundle retVal = new Bundle(); //@formatter:off Object when = client .search() .forResource(eq(Condition.class)) .where(any(ICriterion.class)) .returnBundle((Class<IBaseBundle>)any()) .execute(); when((Object)when) .thenReturn(retVal); //@formatter:off Bundle actual = client.search().forResource(Condition.class).where(Condition.ASSERTER.hasId("123")).returnBundle(Bundle.class).execute(); assertSame(retVal, actual); } }