在路由规范中指定默认格式

我有以下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

但是,如果这在任何地方都有记录,那么是好奇的?


只需在规范中设置这样的格式...

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

rake routes响应中没有明确标记:controller:action ,因为这些内置于Rails的MVC结构中,但是:format显式地显示,并将:format传递给route_to 。 例如 ...

同样,您可能会在您的rake routes输出中看到一些:id引用,这可以通过将:id参数传递给route_to来加以利用。

在“RSpec-rails”文档中可以看到有关RSpec中路由的其他示例。

在内部,RSpec的route_to委托给Rails的assert_recognizes ,你可以在Rails文档中看到这些文档。

链接地址: http://www.djcxy.com/p/67489.html

上一篇: specifying default format in routing spec

下一篇: Updating GAC dlls