【发布时间】:2020-09-01 23:27:06
【问题描述】:
我的 Active Admin 面板中有自定义 member_action,它负责重新发送设备重置密码说明。
admin/users.rb
ActiveAdmin.register User do
member_action :reset_password do
user = User.find(params[:id])
user.send_reset_password_instructions
redirect_to(admin_user_path(user),
notice: "Password reset email sent to #{user.email}")
end
end
如何为此类操作编写 RSpec 测试?我唯一找到的是this one,我认为这与我的问题不太相关。
我试图像下面这样:
require 'rails_helper'
describe Admin::UsersController, type: :controller do
include Devise::TestHelpers
let!(:admin) { create(:admin_user) }
before(:each) do
sign_in admin
end
describe 'GET user' do
let(:user) { create(:user, :random_email) }
before(:each) do
User.should_receive(:find).at_least(:once).and_return(user)
get :show
end
it 'sends email' do
get :reset_password
expect(user).should_receive(:send_reset_password_instructions)
end
end
end
但我收到一个错误:
ActionController::UrlGenerationError:
No route matches {:action=>"reset_password", :controller=>"admin/users"}
【问题讨论】:
标签: ruby-on-rails ruby rspec activeadmin