在kotlin+中编写单元测试用例时,在每个{…}块中获取错误丢失调用;mock+;Junit5

在kotlin+中编写单元测试用例时,在每个{…}块中获取错误丢失调用;mock+;Junit5,kotlin,junit5,mockk,Kotlin,Junit5,Mockk,我正在测试的功能 class FileUtility { companion object { @JvmStatic fun deleteFile(filePath: String) { try { val file = getFileObject(filePath) file.delete() } catch (ex :Exception) {

我正在测试的功能

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() }
}

这是错误还是我编写了错误的测试用例?

假设
getFileObject
FileUtility.kt
文件中的顶级函数,您需要使用
mockkStatic(…)
模拟模块范围的函数,参数作为模块的类名

例如,pkg包中模块File.kt的“pkg.FileKt”

@测试
有趣的deleteFileTest(){
val file=mockk()
mockkStatic(“pkg.FileUtilityKt”)
val filePath=“filePath”
每个{getFileObject(filePath)}返回文件
每个{file.delete()}回答{true}
删除文件(文件路径)
验证{file.delete()}
}

您的
getFileObject
函数驻留在哪里?
 io.mockk.MockKException: Missing calls inside every { ... } block.
@Test
fun deleteFileTest() {
    val file = mockk<File>()
    mockkStatic("pkg.FileUtilityKt")

    val filePath = "filePath"
    every { getFileObject(filePath) } returns file
    every {file.delete()} answers {true}

    deleteFile(filePath)

    verify { file.delete() }
}