我有一个小项目(非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
任何帮助都将不胜感激。
答案 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...