mockito是我的新手,所以我不知道这种行为是否正常。
这是一个简单的示例类:
open class Example( val example2: Example2) {
fun getStuff(fileName: String) : String {
return example2.getFileExtension(fileName)
}
}
open class Example2(val fileUtils: FileUtils) {
fun getFileExtension(fileName: String): String {
return fileUtils.getExtension(fileName)
}
}
因此,当我尝试使用以下代码对其进行测试时:
class ExampleTest {
lateinit var example: Example
val example2 = mock(Example2::class.java)
@Before
fun init() {
example = Example(example2)
}
@Test
fun getFileExtensionTest() {
val resultExpected = "jpg"
`when`(example2.getFileExtension(ArgumentMatchers.anyString())).thenReturn("jpg")
assertThat(example.getStuff("hello.jpg"), `is`(resultExpected))
}
}
执行return fileUtils.getExtension(fileName)
时,我在'when'
中收到NullPointerException
所以'when'
正在执行应该被嘲笑的功能。
答案 0 :(得分:0)
我明白了!
默认情况下,Kotlin将函数定为final,而嘲讽不能模拟final函数/类。因此,这里有两种解决方案:
向函数添加open
或让模仿者使用最终的类和函数:Mockito 2 now supports final