【发布时间】:2019-10-04 19:21:14
【问题描述】:
我正在尝试在传递给使用 Kotlin 标准库内联函数的 lambda 函数中对代码进行单元测试。我尝试将 thenAnswer 与 mockito 一起使用,但无法使用 Mockito-Kotlin 库中的 isA() 或 any() ArgumentMatchers 编译代码。这是sn-ps的代码:
待测代码
sessionFactory.openSession().use { session ->
// Code I want to test
}
单元测试代码
val sessionFactory: SessionFactory = mock()
val session: Session = mock()
whenever(sessionFactory.openSession()).thenReturn(session)
whenever(session.use(isA())).thenAnswer{
@Suppress("UNCHECKED_CAST")
(it.arguments[0] as (Any) -> Any).invoke(session)
}
我在正确的轨道上吗?一种解决方法是不使用 use 函数并在 finally 块中显式关闭 Hibernate 会话对象,但我不想这样做。
【问题讨论】:
标签: unit-testing kotlin lambda mockito