在我的应用程序中,我有以下代码:
File.open "filename", "w" do |file|
file.write("text")
end
我想通过RSpec测试这段代码.这样做的最佳实践是什么?
在我的应用程序中,我有以下代码:
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!"
字符串IO的行为类似于打开的文件.因此,如果代码已经可以使用文件对象,那么它将使用StringIO.