使用谓词作为单元测试的参数
Use Predicate as a Argument for Unit Testing
我目前有一个函数使用数据类型谓词作为函数的参数之一。见下文:
@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);
}
}
在这种情况下,predicate 为空,因为我不确定要将什么设置为参数
您正在使用 any(Pageable.class)
作为最后一个参数。
您需要对其他两个参数使用 Mockito.eq()
:
when(imageController.getAll(Mockito.eq(webRequest), Mockito.eq(predicate), any(Pageable.class)))
.thenReturn(responseEntity);
我目前有一个函数使用数据类型谓词作为函数的参数之一。见下文:
@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);
}
}
在这种情况下,predicate 为空,因为我不确定要将什么设置为参数
您正在使用 any(Pageable.class)
作为最后一个参数。
您需要对其他两个参数使用 Mockito.eq()
:
when(imageController.getAll(Mockito.eq(webRequest), Mockito.eq(predicate), any(Pageable.class)))
.thenReturn(responseEntity);