2011-01-07 64 views
18

我是新的Rspec,剛剛通過在Rails 3上生成新的控制器開始。它默認生成一些Rspec測試。我有一個關於如何讓它們通過的問題。既然這樣,我看到這個測試我的終端」「沒有路線匹配」錯誤?

1)BuildingsController GET‘秀’ 應該是成功的

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

不過,我不明白爲什麼它的到來,因爲我已經創建(「資源:建築」)這條路線,我跑了rake routes,並確保它的存在

建築GET /buildings/:id(.:format){:動作=>「秀」 , :controller =>「buildings」}

通過什麼方法是必要的?下面是測試的方式:

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

回答

38

您需要將現有建築物的ID:get :show, :id => @building.id

路線抱怨,因爲:id是不可選的。

+4

如果您的路線中的ID必須是顯式的,您可能還有問題:`get:show,:building_id => @ building.id` – you786 2013-12-09 18:38:00