RSpec定位资源路径

时间:2013-01-20 06:48:24

标签: ruby rspec rspec2

我有一个小项目(非Rails),我正在使用RSpec进行测试。为了加载我正在使用的模型:

require_relative "../lib/checkout"

但是我遇到了加载配置文件的问题,例如,测试不再在以下时间找到我的“items.csv”:

CSV.foreach("items.csv") do |row|

请注意,仅当从spec目录运行spec时才会出现问题,即:

rspec checkout_spec.rb

从项目根运行它很好:

rspec spec/checkout_spec.rb

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

CSV.foreach使用当前目录查找文件。您应该使用File.expand_path来获取items.csv的绝对路径以避免此问题。

编辑添加示例

假设文件位于root/items.csv,并且带有此代码的ruby文件位于root/lib/file.rb,您可以写

path = File.expand_path File.join(File.dirname(__FILE__), '..', 'items.csv')
CSV.foreach path do |row|
  # rest of code...