因此,我正在編寫一個測試,用於定位特定文件metadata.json
,以解析爲使用RSpec測試的Ruby的JSON gem。我的目錄層次結構如下所示:使用Rake在Ruby中解析的文件路徑
|_tests
- metadata.json
- Rakefile
- Gemfile
|_specs
-tagging_specs
的代碼是一個簡單的文件讀取傳入相對路徑,所以:
print "Getting values from metadata.json file"
#Path to metadata.json file
metadata = File.read('../metadata.json')
values = JSON.parse(metadata)
直接調用使用RSpec的命令時,這工作得很好。但是當我計劃對多個測試進行測試時,我選擇使用Rake來管理我的規格。因爲這樣做,但我得到一個錯誤,有一個完整的目錄路徑通過諸如home/work/projects/tests/metadata.json
該錯誤消息我得到使用../metadata.json時與Rake是:
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
這如果只是我使用這些測試,那麼woukdnt會成爲問題。然而,他們的目的是爲他人提供工作的基礎,所以他們的目錄路徑當然會有所不同。那麼Ruby或Rake中有什麼方法可以使它更具動態性和可重用性?
完美的工作。謝謝 – DevLuke
然後標記答案:) – nattfodd