使用谓词作为单位测试的参数



i当前具有将数据类型谓词用作函数的参数之一的函数。请参阅下面:

@RequestMapping(method = GET)
function getAll(WebRequest request, @QuerydslPredicate(root = Image.class) Predicate predicate, @PageableDefault Pageable pageable) {
   return "test"
}

但是,我目前正在编写单元测试以测试此功能的有效性,并且我很难将谓词的参数传递到此功能中,以便我可以测试。有人可以协助吗?这是我到目前为止的测试功能:

 @RunWith(MockitoJUnitRunner.class)
 public class ImageTest {
 private Predicate predicate;
 @InjectMocks
ImageController imageController = new ImageController(); 
 @Test
public void testGetAll() throws Exception {
    WebRequest webRequest = mock(WebRequest.class);
    ResponseEntity responseEntity = ok(new PagedResponse<>(page));
    when(imageController.getAll(Mockito.eq(webRequest), Mockito.eq(predicate), any(Pageable.class)))
            .thenReturn(responseEntity);
   }
}

在这种情况下,谓词是无效的,因为我不确定要将什么设置为参数

您正在使用 any(Pageable.class)作为最后一个参数。

您需要使用Mockito.eq()进行其他两个参数:

when(imageController.getAll(Mockito.eq(webRequest), Mockito.eq(predicate), any(Pageable.class)))
  .thenReturn(responseEntity);

相关内容

  • 没有找到相关文章

最新更新