2011-01-07 3 views
18

Soy nuevo Rspec y acabo de comenzar generando un nuevo controlador en Rails 3. Genera algunas pruebas Rspec de forma predeterminada. Tengo una pregunta sobre cómo hacerlos pasar. En su forma actual, veo esta prueba en mi terminal"¿Error "No coincide con la ruta"?

1) BuildingsController GET 'show' debe tener éxito

Failure/Error: get 'show' 
No route matches {:controller=>"buildings", :action=>"show"} 
# ./spec/controllers/buildings_controller_spec.rb:17:in `block (3 levels) in <top (required)>' 

Sin embargo, no entiendo por qué está subiendo porque ya tengo esta ruta creada ("recurso: edificios"), y me encontré con rake routes y se aseguró de que está ahí

GET edificio /buildings/:id(.:format) {:. "espectáculo" action => , : controller => "buildings"}

¿Qué es necesario para que esto pase? Aquí está la prueba por cierto:

describe "GET 'show'" do 
    it "should be successful" do 
     get 'show' 
     response.should be_success 
    end 
    end 

Respuesta

38

Tiene que pasar Identificación del edificio existente: get :show, :id => @building.id

Rutas quejan porque :id no es opcional.

+4

Es posible que también tenga un problema si el ID debe ser explícito en su ruta: 'get: show,: building_id => @ building.id' – you786

Cuestiones relacionadas