2011-01-07 19 views
18

Jestem nowym Rspec i właśnie rozpocząłem od wygenerowania nowego kontrolera na Railsach 3. Generuje on niektóre testy Rspec domyślnie. Mam pytanie, jak je przepuścić. W obecnej formie, widzę ten test w moim terminalu”Błąd "Brak pasujących tras"?

1) BuildingsController GET«pokaz» powinien być udany

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)>' 

Jednak nie rozumiem, dlaczego to się zbliża, bo mam już tę trasę utworzoną ("Zasoby: budynki"), i wpadłem rake routes i upewnić się, że tam jest

budynek GET /buildings/:id(.:format) {:. action => "show" , : controller => "buildings"}

Co jest konieczne, aby to przejść? Tutaj jest test na drodze:

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

Odpowiedz

38

Trzeba przekazać identyfikator istniejącego budynku: get :show, :id => @building.id

Trasy narzekać, bo :id nie jest obowiązkowe.

+4

Możesz również mieć problem, jeśli id ​​musi być wyraźny na trasie: 'get: show,: building_id => @ building.id' – you786

Powiązane problemy