I've created a Rails Engine in the normal fashion, installed RSpec, and generated a scaffold for a model, but I can't get any routing specs to pass.
Here's one example:
describe Licensing::LicensesController do
it 'routes to #index' do
get('/licensing/licenses').should route_to('licensing/licenses#index')
end
end
I'm running the examples in the dummy app like this:
$ cd spec/dummy
$ rake spec
/Users/brandan/.rvm/rubies/ruby-1.9.3-p194/bin/ruby -S rspec ../routing/licensing/licenses_routing_spec.rb
F
Failures:
1) Licensing::LicensesController routes to #index
Failure/Error: get('/licensing/licenses').should route_to('licensing/licenses#index')
No route matches "/licensing/licenses"
# /Users/brandan/repos/licensing/spec/routing/licensing/licenses_routing_spec.rb:5:in `block (2 levels) in <top (required)>'
Finished in 0.04345 seconds
1 example, 1 failure
The engine is mounted correctly in the dummy app:
# spec/dummy/config/routes.rb
Rails.application.routes.draw do
mount Licensing::Engine => "/licensing"
end
And I can go into the dummy app and fire up the console and get that route just fine:
1.9.3p194 :001 > app.get('/licensing/licenses')
Licensing::License Load (0.3ms) SELECT "licensing_licenses".* FROM "licensing_licenses"
200
1.9.3p194 :002 > app.response.body
"<!DOCTYPE html>..."
There's some discrepancy between the dummy app and RSpec, and I can't figure out what it is. I've found several articles that claim to solve this problem, but none of them have helped, and several of them are specific to Rails 3.1:
- Ryan Bigg's article on generating and testing engines
- Matthew Ratzloff's article on testing engine routes in Rails 3.1
- Stefan Wienert's article on mountable engines
- A mailing list message about testing routing helpers in Rails 3.2
Has anybody solved this problem in Rails 3.2/RSpec 2.10?