RSpec认为创建的文件为空

时间:2015-05-05 15:51:19

标签: ruby rspec

我创建了一个创建新文本文件的类。当我尝试将其与现有文件进行比较时,似乎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

1 个答案:

答案 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隐式执行。

希望它有所帮助。