2012-12-18 3 views
7

私は以下のrspecルーティング仕様を持っていますが、投稿に:defaults => { :format => 'json' }を指定する必要があります。どうすればいい?ルーティング仕様のデフォルトフォーマットを指定

スペック:

it "should route to all-locations-nav" do 
    {:post => locations_nav_path }.should route_to(:controller => "api", :action => "locations_nav") 
end 

編集#1
ので、これはそれを修正するように見える、遊ん:

it "should route to all-locations-nav" do 
    {:post => locations_nav_path }.should route_to(:controller => "api", :action => "locations_nav", :format => "json") 
end 

が、これはどこにも文書化されている場合は興味がありましたか?

答えて

4

ジャストロング説明

it "routes to #create" do 
    expect(:post => "/post").to route_to("posts#create", :format => :json) 
end 

...このような仕様にフォーマットを設定...あなたが見ている

行動が:formatに固有ではなく、むしろありますrake routesに表示されるシンボルとroute_toに渡すシンボルとの関係例えば

あなたがrake routesを実行すると、上記のあなたの例を考えると、私は次のようなものを期待する:

locations_nav POST /api/locations_nav(.:format) api#locations_nav

:controller:action明示されるような、rake routes応じてフラグが設定されていないがRailsのMVC構造に組み込まれていますが、:formatが明示的に示されており、:formatroute_toにタップしています。たとえば...

同様に、あなたはおそらくroute_to:idパラメータを渡すことによって活用されるだろう、あなたのrake routes出力、中:idいくつかの参照が表示されます。

RSpecのルーティングに関する追加の例は、"rspec-rails" documentationに記載されています。

内部的には、RSpecのroute_toがRailsのassert_recognizesへの代理人です。これはRails documentationに記載されています。

関連する問題