java - org.mockito.exceptions.base.MockitoException : Please ensure that the type 'UserRestService' has a no-arg constructor

标签 java spring spring-boot junit junit5

我想为 Rest API 创建 JUnit5 测试。

@Test
public void resetRequest_NAME_AND_EMAIL_MISMATCH() throws Exception {
    when(userRestService.resetRequest(anyString(), anyString())).thenReturn(Boolean.valueOf("test"));

    MvcResult result = mockMvc.perform(post("/users/reset_request")
            .contentType(MediaType.APPLICATION_JSON)
            .content(ResetUserDTO))
            .andExpect(status().isBadRequest())
            .andReturn();

    assertEquals(result.getResponse().getContentAsString(), "NAME_AND_EMAIL_MISMATCH");
}

完整代码:Github

但是当我运行测试时出现异常

org.mockito.exceptions.base.MockitoException: Unable to initialize @Spy annotated field 'userRestService'.
Please ensure that the type 'UserRestService' has a no-arg constructor.
.....
Caused by: org.mockito.exceptions.base.MockitoException: Please ensure that the type 'UserRestService' has a no-arg constructor.
    ... 68 more

休息服务代码:GitHub

我尝试添加 @NoArgsConstructor 但我收到警告,变量(UsersService userService、PasswordAdminResetHandler resetHandler 等)未初始化。

你知道我该如何解决这个问题吗?

最佳答案

另一种选择是显式创建 Spy userRestService

@Spy
private UserRestService userRestService = new UserRestService(...);

并使用创建的 Spys 或 Mocks(根据需要)作为参数

关于java - org.mockito.exceptions.base.MockitoException : Please ensure that the type 'UserRestService' has a no-arg constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62448186/

相关文章:

java - 如何进行注释,将该类型的所有类添加到列表中

java - Spring/JPA 持久性是否可能有 "connection preparation"

java - 尝试 Autowiring 使用 MockitoJUnitRunner 运行的配置属性时出现 NullPointerException

java - 为什么scanner.hasNextInt()方法需要一个字母来开始处理数字?

java - 如何获取指定 ISO 国家代码的时区 ID?

java - 在 github 存储库中托管私有(private) Maven Artifact

java - 将封装的响应映射到 POJO

spring - Kendo Spring 演示项目缺少数据库

java - intellij spring boot 构建错误

spring - 如何在 Spring Boot 2.1.0 登录时禁用 Set-Cookie header 上的 HttpOnly 标志