java - 如何模拟特定的阅读文件?

标签 java unit-testing kotlin mocking mockito

我正在实现一个单元测试,该单元测试应该从特定路径读取文件并执行一些操作。
在实际情况下,我的文件将存在于OS的特定路径中-类似于/users/placplac/file.txt
如何在单元测试中实现模拟(或从资源中读取文件)?
这是我要模拟的代码:

class ReportServiceImpl(val filePath: String) {

    private fun getContent() {
      val reader = Mybject(File(filePath).bufferedReader()) // this is what I want to mock
      ....
    }
}
可以仅模拟File(filePath).bufferedReader()部分吗?

最佳答案

只要未对路径进行硬编码并将其作为参数传递,您就可以使用带有测试资源的路径(在src/test/resources中)调用此函数:

val resource = this::class.java.classLoader.getResource("test.txt")
val file = Paths.get(resource.toURI()).toFile()
val absolutePath = file.getAbsolutePath()
val subject = ReportServiceImpl(absolutePath)

... do your tests

关于java - 如何模拟特定的阅读文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62514791/

相关文章:

JAVA,NodeList XML在不知道XML内容的情况下获取所有子节点

node.js - TDD 测试第一个 Node Js Express Rest Api - 单元测试中间件/ Controller /路由

java - 使用主构造函数继承类

kotlin - 在 kotlin js 中加载资源文件(json)

java - 返回的接口(interface)对象如何声明其方法

java - BufferedReader 对其他函数不可见

java - 如何模拟抽象类方法?

c# - 将 using 子句添加到项目中 - 初学者

Android Mockito 太多实际调用

java - 使用 NOLOCK 消除具有悲观锁定的应用程序的死锁