0
私はここに、原因がないルートマッチに失敗しているスペックを持っているが、適切なコードは次のとおりです。RSpecのNOルートマッチ - 必要なキーが欠落している:[:ID]
describe AdminController do
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@admin = create(:admin)
@user = create(:user)
sign_in @admin, scope: :user
end
context "with admin user" do
describe "DELETE #destroy" do
it "deletes the contact" do
puts @user.inspect
expect{
delete admin_destroy_user_path, id: @user.id
}.to change(Profile, :count).by(-1)
end
エラー:
AdminController with admin user DELETE #destroy deletes the contact
Failure/Error: delete admin_destroy_user_path, id: @user.id
ActionController::UrlGenerationError:
No route matches {:action=>"destroy", :controller=>"admin"} missing required keys: [:id]
ルート:私は、私が行方不明です何かわからない
admin_destroy_user DELETE /admin/:id(.:format) admin#destroy
、任意の助けをいただければ幸いです!
どのRSpecのバージョンを使用していますか?おそらく '@ admin.destroy_user_path、params:{id:@ user.id}'のようにidを渡す必要があります。 '@ user.id'が実際に値を返すと仮定します。 – mmichael
また、 'admin_destroy_user_path(@ user.id)'を使用することもできます。 –
皆さん、ありがとうございます。でも、これらのどちらもうまくいけば、params:オプションを使用して同じエラーが発生します。 Igorのオプションを使用すると、 "ActionController :: UrlGenerationError: {:action =>"/admin/2 "と一致するルートはありません:コントローラ=>" admin "}" RSpecのバージョン3.5.4も使用しています。 –