Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!弹簧靴_Java_Spring Boot_Mockito_Powermockito - Fatal编程技术网

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");