我希望覆蓋Devise::RegistrationsController
以實現一些自定義功能。要做到這一點,我創建了一個新的RegistrationsController
像這樣:如何在覆寫設計註冊控制器時編寫控制器測試?
# /app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def new
super
end
end
,並建立了我的路線是這樣的:
devise_for :users, :controllers => { :registrations => "registrations" }
,並試圖對其進行測試是這樣的:
describe RegistrationsController do
describe "GET 'new'" do
it "should be successful" do
get :new
response.should be_success
end
end
end
但這給我一個錯誤:
1) RegistrationsController GET 'new' should be successful
Failure/Error: get :new
AbstractController::ActionNotFound:
Could not find devise mapping for path "https://stackoverflow.com/users/sign_up".
Maybe you forgot to wrap your route inside the scope block? For example:
devise_scope :user do
match "/some/route" => "some_devise_controller"
end
# ./spec/controllers/registrations_controller_spec.rb:13:in `block (3 levels) in <top (required)>'
那麼我做錯了什麼?
你添加了什麼文件 - 我無法弄清楚,謝謝。 – eWizardII
把它放在你的控制器測試中,就在第一個'describe'塊中。 –
在規範 - 我有控制器registration_controller是我把它放在如下無濟於事: 需要「spec_helper」 描述RegistrationsController做 形容「GET‘編輯’」之前做 :每個做 request.env [ 「devise.mapping」] = Devise.mappings [:用戶] 結束 它「應該是成功的」做 得到「編輯」 response.should be_success 結束 結束 結束 – eWizardII