6

私のルートファイルには次のものがあります。

resources :subscription, :only => [:show], :constraints => {:protocol => "https"}

このルートの仕様を次のように追加しようとしています。

it "recognizes and generates #show" do
  { :get => "/subscription", :protocol => 'https' }.should route_to(:controller => "subscriptions", :action => "show")
end

ただし、仕様はまだ失敗します。を削除する:protocol => 'https'と、仕様も失敗します。

ActionController :: RoutingError:    
  「/subscription」に一致するルートはありません
4

3 に答える 3

4

(文書化されていない?)解決策は、次のようにダミーURL全体を含めることです。

it "recognizes and generates #show" do
  { :get => "https://test.host/subscription" }.should route_to(:controller => "subscriptions", :action => "show")
end

私はこのチケットこのチェンジセットからそれを理解しました。

于 2012-09-03T22:47:28.813 に答える
-1

これにスペックを変更すると合格しますか?:

{:get => '/subscription'}.should_not route_to(:controller => …)

これにより、少なくともHTTPがルーティングされないという確信が得られます。

于 2011-09-06T14:36:43.110 に答える
-1

よくわかりませんが、ルートは複数形として宣言する必要があると思います。 「外部からのRailsルーティング」を参照してください。だからそれは

resources :subscriptions

とスペックで

{:get => '/subscriptions', :protocol => 'https'}

それがなしで合格するかどうか試してください:protocol。含まれている場合は、HTTPSを使用した仕様をスキップしてください。これは、単体テストレベルではなく、統合テストでテストする必要があります。

于 2011-09-06T09:39:27.483 に答える