我对/lib/classes
中需要访问zip文件(无上传)的类进行了RSpec测试。该文件存储在/spec/fixtures/files/test.zip
中。如何输入正确的路径以使其与环境无关,即没有绝对路径?
答案 0 :(得分:14)
Rails.root
将为您提供应用根,所以
Rails.root.join "spec/fixtures/files/test.zip"
将为您提供文件的绝对路径,不知道应用在硬盘上的位置。
答案 1 :(得分:4)
据我所知(从每个月或两个月开始),没有更好的方法可以在spec_helper
中构建一些使用__FILE__
值来获取已知内容的路径的方法,然后在此基础上建立自己的助手。
您显然可以在单个__FILE__
文件中使用相对于*_spec.rb
的路径。
答案 2 :(得分:2)
我最近解决了这个问题,这就是我想出的:
在指向RSpec root的spec_helper.rb
(或等效)中定义一个常量:
RSPEC_ROOT = File.dirname __FILE__
在*_spec.rb
(或等效的)测试文件中使用此变量:
require 'spec_helper'
File.open("#{RSPEC_ROOT}/resources/example_data.json")
为何选择此解决方案?
require 'spec_helper'
Rails.root
不同)这是一个要点:https://gist.github.com/thisismydesign/9dc142f89b82a07e413a45a5d2983b07