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)
这是任何错误还是我写了错误的测试用例?
假设getFileObject是文件中的顶级函数FileUtility.kt,您需要使用mockkStatic(...)参数作为 module\xe2\x80\x99s 类名来模拟模块范围函数。
\n\n例如 pkg 包中的模块 File.kt 的 \xe2\x80\x9cpkg.FileKt\xe2\x80\x9d 。
\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}\nRun Code Online (Sandbox Code Playgroud)\n