カスタム Devise ルートの機能テストを有効にしようとしていますが、解決方法がわからない障害にぶつかり続けています。テストしようとしてdevise_scope :user
いるルートは、ルート ファイルのブロックにあります (以下を参照)。
devise_for :users, :controllers => {:registrations => "registrations",
:confirmations => "confirmations",
:sessions => "sessions"}
devise_scope :user do
get '/trainer/:referral_trainer' => "registrations#new"
get '*referral_trainer' => "registrations#new_client"
post '/client_sign_up' => "registrations#create_client"
end
そして私のテストは次のようになります:
test "should get new" do
params = {}
params["referral_trainer"] = "trainer"
get("new", params)
assert_response :success
params = {}
params["trainer"] = "trainer"
get("new_client", params)
assert_response :success
end
しかし、私が得るエラーは次のとおりです。
ActionController::RoutingError: No route matches {:referral_trainer=>"trainer", :controller=>"registrations", :action=>"/trainer/*referral_trainer"}
ActionController::RoutingError: No route matches {:trainer=>"trainer", :controller=>"registrations", :action=>"new_client"}
私のテストでは、次のものもあります。
setup do
@controller = RegistrationsController.new
@request.env["devise.mapping"] = Devise.mappings[:user]
end
正しいコントローラーと Devise のマッピングが使用されるようにします。
Rake ルートは以下を返します:
GET /trainer/:referral_trainer(.:format) registrations#new
GET /*referral_trainer(.:format) registrations#new_client
だから私はルートが存在することを知っています(そしてそれらを本番環境で使用しています)が、プログラムでそれらをテストする方法を理解できません。
どんな助けでも大歓迎です。
ありがとう!