2012-12-18 32 views
7

Tôi có thông số định tuyến rspec sau nhưng tôi cần chỉ định :defaults => { :format => 'json' } trong bài đăng; làm thế nào tôi sẽ làm điều này?chỉ định định dạng mặc định trong định tuyến spec

spec:

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

chỉnh sửa # 1
để chơi xung quanh, nó trông như thế này sửa chữa nó:

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

nhưng tò mò nếu điều này được ghi chép lại bất cứ nơi nào?

Trả lời

4

Chỉ cần thiết lập định dạng trong spec như thế này ...

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

lời giải thích dài ...

Các hành vi bạn đang thấy là không cụ thể cho :format, nhưng đúng hơn là một mối quan hệ giữa các ký hiệu bạn nhìn thấy trong rake routes và các ký hiệu mà bạn chuyển đến route_to.

Ví dụ, đưa ra ví dụ của bạn ở trên, tôi mong đợi một cái gì đó như sau khi bạn chạy rake routes:

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

Các :controller:action không gắn cờ một cách rõ ràng trong việc ứng phó rake routes, như những được xây dựng trong cấu trúc MVC của Rails, nhưng :format được hiển thị rõ ràng và chuyển các cú pháp :format tới route_to vào trong này. Ví dụ:

Tương tự, có thể bạn sẽ thấy một số tài liệu tham khảo :id trong đầu ra rake routes của bạn, sẽ được tận dụng bằng cách chuyển thông số :id tới route_to.

Một số ví dụ bổ sung về định tuyến trong RSpec có thể được xem trong số "rspec-rails" documentation.

Nội bộ, RSpec route_to đại biểu đến Rails 'assert_recognizes, bạn có thể xem tài liệu trong Rails documentation.

Các vấn đề liên quan