【问题标题】:Why does Mockito throw an "InvalidUseOfMatchersException" at for this code?为什么 Mockito 会为此代码抛出“InvalidUseOfMatchersException”?
【发布时间】:2021-09-14 23:50:35
【问题描述】:

我正在为一个用 Kotlin 1.5 编写的 Spring-Boot 项目编写测试。这段代码在测试运行时确实以InvalidUseOfMatchersException 失败,我很难弄清楚原因:

@SpringBootTest
@AutoConfigureMockMvc
internal class ControllerTest {
    @Autowired
    lateinit var mockMvc: MockMvc

    @MockBean
    lateinit var mockedAuthFilter: AuthFilter

    @BeforeEach
    fun setup() {
        assertNotNull(mockedAuthFilter)
        `when`(
            mockedAuthFilter.shouldProceed(
                any(HttpServletRequest::class.java),
                any(AuthConfig::class.java)
            )
        ).thenReturn(true)
    }
    @Test
    fun `This call should return without an error`() {
        mockMvc.perform(get("/api/entities")).andDo(print()).andExpect(status().isOk)
    }
}

对于这个错误,我在网络上所能找到的只是你尝试了一个基本类型的参数匹配器——但这里不是这种情况。您是否遇到过这个问题,您是如何解决的?

【问题讨论】:

  • 是在设置过程中还是在运行测试方法时抛出异常?包括堆栈跟踪可能会有所帮助。
  • 安装时肯定出现错误,在线any(HttpServletRequest::class.java),

标签: kotlin mockito junit5


【解决方案1】:

据我了解,失败来自 shouldProceed 方法本身导致的屏蔽空指针异常,该方法不允许使用空参数进行调用,这种情况在 @987654322 之后设置模拟实例期间在 Mockito 内部发生@返回。

解决方案是不要将 Mockito 与 Kotlin 一起使用,而是使用 MockK 测试实用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多