2011-01-11 16 views
4

AのRails 3アプリケーションは、(私は変更することはできません)、次のコードを呼び出し、いくつかのロジックが含まれていますRSpecのテスト内Rails.application.routes.recognize_pathを呼び出すと、レール3に任意の経路と一致していません

Rails.application.routes.recognize_path("/customers", :method => :get) 

"/ customers"はもちろん可変です。

私は関連するRspecテストを書いています。これはロジックを含むコードを呼び出し、テストは完全なRails環境を持っています。

Rails.application.routes.routes.inspect 

それが適切なルートが含まれている(例えば、それが持っているルートの1つは、「/顧客をGET」):私は、次上げるとき。私は、テストを実行すると

、内の論理結果:同じエラーで

@routes = Rails.application.routes 
assert_recognizes({:controller => "customers", :action => "index"}, "/customers") 

結果:

No route matches "/customers" 

は、次の操作を行います。

ヘルパーテスト、次の中

:私はRailsのことを100%確実に確信してもう一度、同じエラー(Noルートマッチ "/顧客")

、中

# this succeeds and returns "/customers" 
x = helper.customers_path 
Rails.application.routes.recognize_path(x, :method => :get) 

結果.application.routesには適切なルートが含まれています。

これの原因は何ですか?

ありがとうございます!

答えて

3

最後に、この愚かな自己誘導バグの原因を知りました。ルートがマップされるCustomersControllerを定義するのを忘れました。

Railsのソースに潜入した後、ルーティングは実際にルートにマップされたコントローラを一定化することが分かったので、マップする実際のコントローラが仕様に必要です。 :)

関連する問題