获取错误在Kotlin+ Mockk + Junit 5中编写单元测试用例时每个{.}块内缺少调用

e3bfsja2  于 2023-11-21  发布在  Kotlin
关注(0)|答案(1)|浏览(139)

我正在测试的功能,

class FileUtility {
    companion object {
        @JvmStatic
        fun deleteFile(filePath: String) {
            try {
                val file = getFileObject(filePath)
                file.delete()
            } catch (ex :Exception) {
                log.error("Exception while deleting the file", ex)
            }
        }
    }
}

字符串
单元测试,

@Test
fun deleteFileTest() {
    val filePath = "filePath"
    val file = mockk<File>()
    every { getFileObject(filePath) } returns file
    deleteFile(filePath)
    verify { file.delete() }
}


运行此测试用例时出现以下错误

io.mockk.MockKException: Missing calls inside every { ... } block.


这是一个bug还是我写错了测试用例?

093gszye

093gszye1#

假设getFileObjectFileUtility.kt文件中的顶级函数,您需要用mockkStatic(...)模拟模块范围的函数,参数作为模块的类名。
例如,pkg包中模块File.kt的“pkg.FileKt”。

@Test
fun deleteFileTest() {
    val file = mockk<File>()
    mockkStatic("pkg.FileKt")
    
    val filePath = "filePath"
    every { getFileObject(filePath) } returns file
    every {file.delete()} answers {true}

    deleteFile(filePath)
    
    verify { file.delete() }
}

字符串

相关问题