FrameworkFixture
Dynamically generate Rails and Sinatra apps to be tested by Rack::Test
.
Why?
It is annoying to commit a bunch of Rails apps to my projects solely for the purpose of testing.
Seems more DRY to generate them when I run the test and automatically copy specific files into it.
Requirements
gem install framework_fixture
Add frameworks.yml to Fixtures Directory
rails: <3: rails2: - app/controllers/application_controller.rb - config/environment.rb - config/routes.rb <4: rails3: - app/controllers/application_controller.rb - config/application.rb - config/routes.rb - Gemfile sinatra: <1: sinatra: - application.rb <2: sinatra: - application.rb
(See specs for example of what this configuration maps to)
Add to Test Helper
require 'rubygems' require 'framework_fixture' FrameworkFixture.generate(File.dirname(__FILE__) + '/fixtures')
Write Test
require 'spec_helper' if FrameworkFixture.rails == '<4' describe 'Rails 3' do include Rack::Test::Methods def app FrameworkFixture.app.call end it "should have a pulse" do get "/pulse" last_response.body.should == '1' end end end
Run Tests With Framework Environment Variable
RAILS_ENV=test RAILS=3 spec spec SINATRA=1 spec spec