RSpecを使用してテストするRubyのJSON gemに特定のファイルmetadata.json
を解析するテストを作成しています。私のディレクトリ階層は次のようになります。Rakeを使用してRubyで解析するファイルパス
|_tests
- metadata.json
- Rakefile
- Gemfile
|_specs
-tagging_specs
コードは単純なファイルだったので、相対パスを渡し読み:
直接RSpecのコマンドを使用して呼び出されたときにうまく働いたprint "Getting values from metadata.json file"
#Path to metadata.json file
metadata = File.read('../metadata.json')
values = JSON.parse(metadata)
。しかし、私は複数のテストを正しく行う予定ですが、私は仕様を管理するためにRakeを使用することを選択しました。これをやっているのでしかし、私はエラーを取得し、完全なディレクトリ・パスを渡す必要がありなどhome/work/projects/tests/metadata.json
私は熊手で../metadata.json使用している場合、取得エラーメッセージは次のとおりです。
Failure/Error: metadata = File.read('../metadata.json')
Errno::ENOENT:
No such file or directory @ rb_sysopen - ../metadata.json
./spec_tests/tagging_standards_spec.rb:7:in 'read'
./spec_tests/tagging_standards_spec.rb:7:in 'block in <top (required)>'
./spec_tests/tagging_standards_spec.rb:3:in '<top (required)>'
No examples found.
Finished in 0.00072 seconds (files took 0.17953 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
このもし私がこれらのテストを使っているのであれば、問題はありません。しかし、彼らは他人が自分の仕事をするための基盤を提供することを意図しているので、ディレクトリパスはもちろん違います。 RubyやRakeにこれをもっと動的で再利用可能にする方法がありますか?
これは完全に機能しました。ありがとうございます – DevLuke
答えをマーク:) – nattfodd