单元测试文件I/O方法

5

我对单元测试还比较新。我在Ruby中编写了一个类,它接收一个文件,查找其中给定的正则表达式模式,替换该模式,然后将更改保存回文件。我希望能够为这个方法编写单元测试,但我不知道如何做到这一点。有人可以告诉我如何对处理文件I/O的方法进行单元测试吗?


可能是如何对将文件保存到磁盘进行单元测试?的重复问题。 - S.Lott
3个回答

6

请查看如何对保存到磁盘的文件进行单元测试?

基本上,这个想法是一样的,FileSystem是您的类的依赖项。因此,在单元测试中引入一个可以被模拟的角色/接口(使您在单元测试时没有依赖关系);该角色中的方法应该是您从FileSystem中所需的所有内容 -

Read()  # returns file_contents as a string or string[]
Write(file_contents) # same as above

现在你可以使用模拟对象来返回一个预设的字符串数组,然后你的类就可以处理这个数组。在生产代码中,该角色的真实实现会访问文件系统以返回行数组。


2

2
如果您正在将文件对象传递给方法,请尝试创建一个虚拟文件对象,使用一些I/O数据流向文件对象添加内容,并将其传递给被测试的方法。
如果您只是使用某些数据流传递对象的内容,请创建一个虚拟数据流并将其传递给该方法。
您还可以选择创建一个虚拟文件,从该文件路径创建一个文件对象,并将其传递给被测试的方法。

“File”对象不就是数据流吗? - Andrew Grimm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接