2011-09-05 45 views
0

我遇到了似乎表明ActionController :: TestCase.get()方法忽略了我在routes.rb中的問題。ActionController :: TestCase的get方法忽略routes.rb?

Rails版本是3.0.10。

我有我的XmlRpcController#index動作以下RSpec2測試:

it "should get nothing in response to GET request" do 
    get :index 
    response.response_code.should == 400 #bad_request 
end 

而且關係到routes.rb中這條路線的唯一路線是:

post 'rpc', :to => "xml_rpc#index" 

'耙路線' 也只顯示定義的這條路線。

因此,當我運行這個測試時,該行爲實際上會執行!我通過把一個簡單的往裏面它判斷這一點),也是一個日誌包含:

處理由XmlRpcController#指數爲HTML

另外,如果我去的「localhost:3000/RPC」在瀏覽器 - 它說沒有發現路線:就像它應該。但測試有其他的行爲,這讓我感到困惑......

任何人都可以暗示我爲什麼會發生這種情況?我只是開始學習RoR :) 早些時候,在我看來,TestCase的這些'get/post'方法確實尊重routes.rb ...

我是否缺少明顯的東西? :)

回答

0

看來'get:index'方法確實忽略了routes.rb。

對我來說,真正的解決方案是使用是_這個特定目的編寫路由 rspec的匹配:

describe "GET 'contact'" do 
    it "should be successful" do 
     { :get => '/rpc' }.should_not be_routable 
    end 
    end 

想通了這一點得益於Ruby的論壇一些用戶。更多信息here