我正在尝试mockito
模拟一个getValue
使用 java 类作为参数的函数。
为了简化,我做了以下测试:
@Test
fun test1() {
val map = HashMap<String,Any>()
val v:Long = 1L
map["K"]= v
println(map["K"]!!::class.java) //prints class java.lang.Long
println(Long::class.java) //prints long
val dss = Mockito.mock(DataSnapshot::class.java)
Mockito.`when`(dss.getValue( map["K"]!!::java.class))
.thenReturn( map["K"]!!)
//production code uses calls the function like this but it fails to get the value. Returns null;
Assert.assertEquals( map["K"],dss.getValue(Long::class.java))
}
如印刷品所示,输入的类型与map["K"]!!::class.java
不同Long::class.java
。
如果我使用内联类型模拟该方法,它可以工作:
Mockito.`when`(dss.getValue( Long::class.java))
.thenReturn( map["K"]!!)
我怎样才能以类型参数不由长开关逻辑确定的方式模拟该方法?
kotlin 和 java 类型中的一些内容可能会有所帮助。