Java org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!弹簧靴
莫基托真的因为下面的错误而杀人Java org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!弹簧靴,java,spring-boot,mockito,powermockito,Java,Spring Boot,Mockito,Powermockito,莫基托真的因为下面的错误而杀人 @Query("SELECT e FROM Employee e WHERE e.status='A' AND LOWER(e.department.useCode)=LOWER(:flag) AND e.department.status='A' ") Page<Employee> findAllDetails(@Param("flag") String flag, Pageable pageable); 代码: 测试班 @RunWith(Powe
@Query("SELECT e FROM Employee e WHERE e.status='A' AND LOWER(e.department.useCode)=LOWER(:flag) AND e.department.status='A' ")
Page<Employee> findAllDetails(@Param("flag") String flag, Pageable pageable);
代码:
测试班
@RunWith(PowerMockRunner.class)
@PrepareForTest({PCUtils.class })
public class EmployeeServiceTest {
@InjectMocks
private EmployeeServiceimpl employeeServiceimpl;
@Mock
private Pageable pageableMock;
@Mock
private Page<Employee> employeePage;
@Mock
private EmployeeRepository employeeRepository;
@Mock
private EmployeeRepository programRepositoryMock;
@Mock
private RoleTypeRepository roleTypeRepository;
@Mock
private RoleType roleTypeMock;
@Mock
private Employee employee;
@Mock
private Optional<Employee> employeeOptional;
@Mock
private Employee programMock;
@Mock
private Optional<Employee> programOptionalMock;
@Mock
private EmployeeDto employeeDto;
@Mock
private Sort sortMock;
@Mock
private Exception ex;
@Mock
private Environment env;
@Test
public void test_findEmployeesPageable() {
when(employeeRepository.findAllByStatusAndRoleTypeActive(anyString(), pageableMock)).thenReturn(employeePage);
when(pageableMock.getPageNumber()).thenReturn(1);
when(pageableMock.getSort()).thenReturn(sortMock);
assertNotNull(employeeServiceimpl.findEmployeePageable(pageableMock, anyString(), anyString(), anyString()));
}
}
试着替换
@Test
public void test_findEmployeesPageable() {
when(employeeRepository.findAllByStatusAndRoleTypeActive(anyString(), pageableMock)).thenReturn(employeePage);
when(pageableMock.getPageNumber()).thenReturn(1);
when(pageableMock.getSort()).thenReturn(sortMock);
assertNotNull(employeeServiceimpl.findEmployeePageable(pageableMock, anyString(), anyString(), anyString()));
}
与
这也大大提高了测试的可读性,因为哪个普通用户将Mockito.anyString作为方法参数传递?您的问题在于行
assertNotNull(employeeServiceimpl.findEmployeePageable(pageableMock, anyString(), anyString(), anyString()));
这不是任何字符串所做的。简而言之,anyString用于在
stub方法告诉Mockito在调用方法时如何操作,或
验证方法并询问Mockito是否调用了该方法。
但在这里,您试图以完全不同的方式使用任何字符串。看起来您正试图让Mockito发明参数来传递给您的方法。莫基托不是这样做的
因此,您必须为该方法提供自己的参数。也许像
employeeServiceimpl.findEmployeePageable(pageableMock, "test sort", "test direction", "test use cd");
展示你是如何进行模拟的。现在展示测试类
@Test
public void test_findEmployeesPageable() {
when(employeeRepository.findAllByStatusAndRoleTypeActive("", pageableMock)).thenReturn(employeePage);
when(pageableMock.getPageNumber()).thenReturn(1);
when(pageableMock.getSort()).thenReturn(sortMock);
assertNotNull(employeeServiceimpl.findEmployeePageable(pageableMock, "", "", ""));
}
assertNotNull(employeeServiceimpl.findEmployeePageable(pageableMock, anyString(), anyString(), anyString()));
employeeServiceimpl.findEmployeePageable(pageableMock, "test sort", "test direction", "test use cd");