在我的应用程序中,我有以下代码:
File.open "filename", "w" do |file|
file.write("text")
end
我想通过 RSpec 测试这段代码。这样做的最佳做法是什么?
最佳答案
我建议为此使用 StringIO
并确保您的 SUT接受要写入的流而不是文件名。这样,可以使用不同的文件或输出(更可重用),包括字符串 IO(有利于测试)
因此在您的测试代码中(假设您的 SUT 实例是 sutObject
并且序列化程序被命名为 writeStuffTo
:
testIO = StringIO.new
sutObject.writeStuffTo testIO
testIO.string.should == "Hello, world!"
String IO 的行为就像一个打开的文件。因此,如果代码已经可以使用 File 对象,那么它也可以使用 StringIO。
关于ruby - RSpec:如何测试文件操作和文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070422/