在 kotlin + Mockk + Junit5 中编写单元测试用例时出现错误 Missing Calls inside every { ... } block

Aka*_*tel 5 kotlin junit5 mockk

我正在测试的功能,

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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

单元测试,

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

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

 io.mockk.MockKException: Missing calls inside every { ... } block.
Run Code Online (Sandbox Code Playgroud)

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

sid*_*ate 4

假设getFileObject是文件中的顶级函数FileUtility.kt,您需要使用mockkStatic(...)参数作为 module\xe2\x80\x99s 类名来模拟模块范围函数。

\n
\n

例如 pkg 包中的模块 File.kt 的 \xe2\x80\x9cpkg.FileKt\xe2\x80\x9d 。

\n
\n
@Test\nfun deleteFileTest() {\n    val file = mockk<File>()\n    mockkStatic("pkg.FileKt")\n    \n    val filePath = "filePath"\n    every { getFileObject(filePath) } returns file\n    every {file.delete()} answers {true}\n\n    deleteFile(filePath)\n    \n    verify { file.delete() }\n}\n
Run Code Online (Sandbox Code Playgroud)\n