Utworzono silnik szyny w the normal fashion, zainstalowałem RSpec i wygenerowałem rusztowanie dla modelu, ale nie mogę uzyskać specyfikacji routingu do przekazania.Wszystkie przykłady routingu są nieskuteczne dla mechanizmu Rails 3.2 z RSpec 2.10
Oto jeden z przykładów:
describe Licensing::LicensesController do
it 'routes to #index' do
get('/licensing/licenses').should route_to('licensing/licenses#index')
end
end
biegnę przykłady w manekina aplikacji tak:
$ 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
Silnik jest zamontowany prawidłowo w manekina aplikacji:
# spec/dummy/config/routes.rb
Rails.application.routes.draw do
mount Licensing::Engine => "/licensing"
end
Mogę wejść do atrapa i odpalić konsolę, aby uzyskać tę trasę:
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>..."
Istnieje pewna rozbieżność między aplikacją fikcyjną a RSpec i nie wiem, co to jest. Znalazłem kilka artykułów, które twierdzą, aby rozwiązać ten problem, ale żaden z nich nie pomógł, a kilka z nich są specyficzne dla 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
Czy ktoś rozwiązał ten problem w Rails 3.2/RSpec 2.10?
Ja zakładając, że testujemy na manekina aplikacji, która integruje silnik. Czy jesteś pewien, że silnik jest zamontowany na trasach fałszywej aplikacji? Jeśli tak, czy jesteś pewien, że twoja specyfikacja jest typu ': type =>: routing'? –
@TanzeebKhalili Jestem pewien, że trasy są poprawne, ponieważ działają w konsoli i przeglądarce. Używam specyfikacji z poziomu fałszywej aplikacji. Pliki znajdują się w 'spec/routing', a jawne określanie': type =>: routing' nie powoduje, że przykłady również są przekazywane. Więcej pomysłów? : -/ – Brandan
Co do następujących zmian: 1) Inny opisany obiekt: "opisz" trasy "do ..." i 2) Inna składnia: '{: get => '/ licensing/licenses'} .should be_routable' –