2016-06-01 3 views
1

テストする方法により、ユーザーがデータを含む追加ファイルにpathを追加することができます。ユニットテストで使用するための一時ファイルを生成するにはどうすればよいですか?

例えば、ユーザはdata.txtというファイルを/workspace/dataディレクトリに保存することがあります。そして、このディレクトリへのパスをDATA_PATHという既存の配列に追加します。

方法:pathは、ユーザがファイルを格納するのRailsアプリ内の場所である

def add_custom_path(path) 
    DATA_PATH.unshift(path) 
end 

test-unitを使用しています。

質問:

temparilyファイルが消えていた後assert_not_emptyテストを実行し、いくつかのディレクトリにファイルを生成し、する方法はありますか?

私は宝石のテストを書いた経験がありませんので、どんな指針も高く評価されます。

答えて

1

The .create and .new methods of Ruby's Tempfile take a second argument which is the directory you want the file to be inで作成され、FileオブジェクトがガベージコレクションまたはRubyが終了すると、Tempfileで作成されたファイルが自動的に削除されます。だから、あなたがそれに書き込み

tempfile = Tempfile.new('filename', 'directoryname') 
を一時ファイルを作成することができ、あなたのテストを行うと、Rubyはあなたのためにそれをきれいにしましょう。

最初の引数はファイルの修飾されていない名前全体ではなく、Tempfileが曖昧さを含む文字を追加する部分であるため、テストスイートで複数回も安全に実行できます。

また、ファイルに特定の接尾辞が必要な場合は、たとえば次のようにすることができます。

tempfile = Tempfile.new(['filename', '.rb'], 'directoryname') 
関連する問題