[英]Rails Testing Devise registrations_controller
我只希望具有特定電子郵件地址的人能夠注冊。 我正在使用Devise,這是我的內部控制器/admins/registrations_controller.rb
class Admins::RegistrationsController < Devise::RegistrationsController
def create
if params[:admin][:email] == Rails.application.credentials.development[:admin_email]
super
end
end
我正在嘗試在測試中發送電子郵件,密碼和確認密碼。
require 'rails_helper'
RSpec.describe Admins::RegistrationsController do
it 'does not allow xxx@gmail.com with very-secret password to register' do
@request.env["devise.mapping"]=Devise.mappings[:admin]
patch :create, admin: {email: 'xxx@gmail.com", password: "very-secret", password-confirmations: "very-secret"}
end
end
我收到一個參數錯誤:未知關鍵字:admin。 如何為Devise編寫適當的補丁程序請求?
編輯:我的routes.rb
Rails.application.routes.draw do
devise_for :admins, controllers: {sessions: 'admins/sessions',
registrations: 'admins/registrations'}
....
我的耙路
admin_registration PATCH /admins(.:format)
admins/registrations#update
PUT /admins(.:format)
admins/registrations#update
DELETE /admins(.:format)
admins/registrations#destroy
POST /admins(.:format)
admins/registrations#create
更多信息:這是通過使用瀏覽器打印出來的,它確實可以在瀏覽器中運行:
Started POST "/admins" for ::1 at 2019-7-03 21:08:58 -0500
Processing by Admins::RegistrationsController#create as HTML
Parameters: {"utf8"=>"_", "authenticity_token"=>"xxx", "admin"=>{"email"=>"abc@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
inside registrations_controller.rb CREATE
你能試一下嗎
post '/admins', params: admin_attributes
如果要在另一個示例中再次使用它,可以使用let
定義admin_attributes
。
Rspec.describe RegistrationsController do
let(:admin_attributes) { { admin: { email: 'xxx@gmail.com", password: "very-secret", password-confirmations: "very-secret" } } }
發布:創建,參數:{“ admin” => {“ email” =>“ abc@gmail.com”,“ password” =>“非常機密”,“ password_confirmation” =>“非常機密”}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.