@Test
public void testRepositoryMethodReferenceWithArgs() throws Exception {
RepositoryItemReaderBuilder.RepositoryMethodReference<TestRepository> repositoryMethodReference =
new RepositoryItemReaderBuilder.RepositoryMethodReference<>(this.repository);
repositoryMethodReference.methodIs().foo(ARG1, ARG2, ARG3, null);
RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>()
.repository(repositoryMethodReference)
.sorts(this.sorts)
.maxItemCount(5)
.name("bar").build();
ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class);
when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(),
this.pageRequestContainer.capture())).thenReturn(this.page);
String result = (String) reader.read();
assertEquals("Result returned from reader was not expected value.", TEST_CONTENT, result);
verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result);
}