簡體   English   中英

Rails Testing Devise注冊_控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM