@Test public void testQuery() throws Exception { SalesforceConnector connector = new SalesforceConnector(); final SObject sObject1 = Mockito.mock(SObject.class); final SObject sObject2 = Mockito.mock(SObject.class); final SObject sObject3 = Mockito.mock(SObject.class); when(sObject1.getId()).thenReturn("1"); when(sObject2.getId()).thenReturn("2"); when(sObject3.getId()).thenReturn("3"); QueryResult queryResult = Mockito.mock(QueryResult.class); when(queryResult.getRecords()) .thenAnswer( new Answer<Object>() { int counter = 0; @Override public Object answer(InvocationOnMock invocationOnMock) throws Throwable { SObject[] result = null; switch (counter) { case 0: result = new SObject[] {sObject1}; break; case 1: result = new SObject[] {sObject2, sObject3}; break; case 2: result = new SObject[] {}; break; } counter++; return result; } }); when(queryResult.isDone()).thenReturn(false).thenReturn(true); when(queryResult.getQueryLocator()).thenReturn("001").thenReturn(null); PartnerConnection partnerConnection = Mockito.mock(PartnerConnection.class); BulkConnection bulkConnection = Mockito.mock(BulkConnection.class); connector.setBulkConnection(bulkConnection); connector.setConnection(partnerConnection); when(partnerConnection.query(eq(MOCK_QUERY))).thenReturn(queryResult); when(partnerConnection.queryMore("001")).thenReturn(queryResult); PagingDelegate<Map<String, Object>> delegate = connector.query(MOCK_QUERY, new PagingConfiguration(1)); List<Map<String, Object>> result = delegate.getPage(); assertEquals(1, result.size()); result = delegate.getPage(); assertEquals(2, result.size()); assertNull(delegate.getPage()); }