Mockito-`when`执行函数来模拟它

时间:2018-09-05 11:04:25

标签: android mockito

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'正在执行应该被嘲笑的功能。

1 个答案:

答案 0 :(得分:0)

我明白了!

默认情况下,Kotlin将函数定为final,而嘲讽不能模拟final函数/类。因此,这里有两种解决方案: