@Test public void pagedByPage() { ArgumentCaptor<Integer> requestCapture = ArgumentCaptor.forClass(Integer.class); Mockito.when(callIntList.futureCall(requestCapture.capture(), (ApiCallContext) Mockito.any())) .thenReturn(ApiFutures.immediateFuture(Arrays.asList(0, 1, 2))) .thenReturn(ApiFutures.immediateFuture(Arrays.asList(3, 4))) .thenReturn(ApiFutures.immediateFuture(Collections.<Integer>emptyList())); Page<Integer> page = FakeCallableFactory.createPagedCallable( callIntList, PagedCallSettings.newBuilder(new ListIntegersPagedResponseFactory()).build(), clientContext) .call(0) .getPage(); Truth.assertThat(page.getValues()).containsExactly(0, 1, 2).inOrder(); Truth.assertThat(page.hasNextPage()).isTrue(); page = page.getNextPage(); Truth.assertThat(page.getValues()).containsExactly(3, 4).inOrder(); Truth.assertThat(page.hasNextPage()).isTrue(); page = page.getNextPage(); Truth.assertThat(page.getValues()).isEmpty(); Truth.assertThat(page.hasNextPage()).isFalse(); Truth.assertThat(page.getNextPage()).isNull(); Truth.assertThat(requestCapture.getAllValues()).containsExactly(0, 2, 4).inOrder(); }