在路由规范中指定默认格式
我有以下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文档中看到这些文档。
上一篇: specifying default format in routing spec
下一篇: Updating GAC dlls