I have a RSpec test for a class in /lib/classes
which needs access to a zip file (no upload). The file is stored in /spec/fixtures/files/test.zip
.
As far as I know (from looking every month or two) there is no better way that building something in spec_helper
that uses the __FILE__
value to grab the path to a know bit of content, then build your own helpers on top of that.
You can obviously use a path relative to __FILE__
in the individual *_spec.rb
file as well.
Rails.root
will give you the app root, so
Rails.root.join "spec/fixtures/files/test.zip"
will give you the absolute path of your file, agnostic of the location of the app on your hard drive.
I've tackled this issue recently and here's what I came up with:
Define a constant in your spec_helper.rb
(or equivalent) pointing to RSpec root:
RSPEC_ROOT = File.dirname __FILE__
Use this variable in your *_spec.rb
(or equivalent) test files:
require 'spec_helper'
File.open("#{RSPEC_ROOT}/resources/example_data.json")
Why this solution?
require 'spec_helper'
Rails.root
)Here's a Gist: https://gist.github.com/thisismydesign/9dc142f89b82a07e413a45a5d2983b07