2010-09-02 73 views
0

我在routes.rb中定義了以下路線:測試中軌具名的路線

map.search 'fuzzyleads/search/:url', :controller => 'fuzzyleads', :action => 'search', :method => 'get' 

的問題是,我不能讓這個測試通過:

def test_search_route 
    assert_generates "fuzzyleads/search/someurl", { :controller => "fuzzyleads", :action => "search", :url => "someurl" } 
end 

它不喜歡url部分,我得到以下錯誤:

found extras <{:url=>"someurl"}>, not <{}>

我不知道爲什麼,有誰能看到我做錯了什麼?

+0

您是否嘗試過使用「url」以外的名稱?它可能與路由過程內部的某些內容相沖突,所以這是值得的。 – Shadwell 2010-09-02 20:15:13

回答

0

rake routes的輸出會幫助我們做出更好的猜測。以下是我測試用Rails-2.3.8:

(1)增加在config/routes.rb

(2)創建下列RSpec的測試你作爲第二路線路線:

it "should have valid route for fuzzyleads search" do 
    route_for(:controller => 'fuzzyleads', :action => 'search', :url => 'someurl').should == 
    "/fuzzyleads/search/someurl" 
end 

但這種失敗與以下內容:

ActionController::RoutingError in 'FuzzyLeadsController should have valid route for fuzzyleads search'     
No route matches "/fuzzyleads/search/someurl" with {:method=>:get}             
If you're expecting this failure, we suggest {:get=>"/fuzzyleads/search/someurl"}.should_not be_routable 

但是,當我刪除了:method限制一切工作順利。添加:method => 'get'不足以使測試通過。當我對未滿足的路線設置條件時,我看到了類似的失敗,所以我猜想你的情況會發生類似的情況。