我创建了一个创建新文本文件的类。当我尝试将其与现有文件进行比较时,似乎RSpec认为创建的文件为空。
expect(open @expected).to eq(open @result)
结果:
(compared using ==)
Diff:
@@ -1,2 +1,2 @@
-[]
+["The expected output\n"]
以下是创建文件的代码:
FileUtils.touch out_path
target = File.new out_path, 'w+'
File.open(in_path, "r") do |file_handle|
file_handle.each_line do |line|
target.puts line
end
end
答案 0 :(得分:1)
您不会将文件内容刷新到磁盘。 Ruby会自己刷新它,但每当它决定时。为确保刷新文件内容,应使用File#open
而不是File.new
的块变体:
File.open(out_path, 'w+') do |target|
File.open(in_path, "r") do |file_handle|
file_handle.each_line do |line|
target.puts line
end
end
end # here file is flushed
使用File#new
您可以选择明确Python exception handling内容,也可以通过调用flush
隐式执行。
希望它有所帮助。