Ruby on rails Rspec can';找不到ActiveAdmin控制器
我正在尝试使用rspec测试ActiveAdmin中的自定义成员操作 app/admin/inactive_user.rbRuby on rails Rspec can';找不到ActiveAdmin控制器,ruby-on-rails,ruby,rspec,activeadmin,Ruby On Rails,Ruby,Rspec,Activeadmin,我正在尝试使用rspec测试ActiveAdmin中的自定义成员操作 app/admin/inactive_user.rb ActiveAdmin.register InactiveUser do member_action :activate, method: :put do user = User.new(email: resource.email, password: generate_activation_code) resource.destroy if user.
ActiveAdmin.register InactiveUser do
member_action :activate, method: :put do
user = User.new(email: resource.email, password: generate_activation_code)
resource.destroy if user.save
send_activation_email user
redirect_to admin_inactive_users_path, notice: "#{user.email} was activated"
end
end
require 'spec_helper'
describe Admin::InactiveUserController do
render_views
before do
@admin = FactoryGirl.create(:admin, confirmed_at: Date.yesterday)
authenticate_user @admin
end
describe "PUT #activate" do
before(:each) do
@inactive_user = FactoryGirl.create(:inactive_user)
put :activate, id: @inactive_user.id
end
it "should redirect to inactive users index" do
expect(response).to redirect_to(admin_inactive_users_path)
end
end
end
app/spec/admin/inactive\u user\u controller\u spec.rb
ActiveAdmin.register InactiveUser do
member_action :activate, method: :put do
user = User.new(email: resource.email, password: generate_activation_code)
resource.destroy if user.save
send_activation_email user
redirect_to admin_inactive_users_path, notice: "#{user.email} was activated"
end
end
require 'spec_helper'
describe Admin::InactiveUserController do
render_views
before do
@admin = FactoryGirl.create(:admin, confirmed_at: Date.yesterday)
authenticate_user @admin
end
describe "PUT #activate" do
before(:each) do
@inactive_user = FactoryGirl.create(:inactive_user)
put :activate, id: @inactive_user.id
end
it "should redirect to inactive users index" do
expect(response).to redirect_to(admin_inactive_users_path)
end
end
end
我得到了这个错误:
NameError:
uninitialized constant Admin
# ./spec/admin/inactive_user_controller_spec.rb:3:in `<top (required)>'
尝试要求使用
rails\u helper
而不是spec\u helper
,请参阅
rails\u helper
应该需要文件。展开路径(“../../config/environment“,\uu文件”
然后config/environment
应该调用rails.application.initialize在测试开始之前,应该加载初始化器/active_admin.rb
并定义admin::InactiveUserController
运行初始化器/active\u admin
后,您应该能够检查ActiveAdmin.application.namespaces.map(&:name)
,在您的情况下应该是[:admin]
。如果是,则检查ActiveAdmin.application.namespaces[:admin].resources.map(&:c
哪个应该给你已经创建的控制器的列表。这假设你在初始化器/active\u admin.rb
中有config.default\u namespace=:admin
初始化器被跳过了吗?@PiersC将该行添加到配置中,但仍然失败,如何检查是否跳过初始值设定项?放入调试语句?pry?@PiersC测试失败后会运行初始化器,我会更新问题,你说得对,通过要求rails\u helper
我在测试前加载initializers/active\u admin.rb
,但在initializers/active\u admin运行后,我一直遇到相同的错误,您应该能够检查ActiveAdmin.application.namespace.map(&:name)
,在您的情况下应该是[:admin]
。如果是这样,请检查ActiveAdmin.application.namespaces[:admin].resources.map(&:controller)
,它将为您提供已创建的控制器列表。您还有其他可以比较的测试吗?我使用了这个ActiveAdmin.application.namespaces[:admin].resources.map(&:c)然后意识到它是Admin::InactiveUsersController
,所以我缺少了一个“s”。谢谢恭喜。我猜你不是第一个或最后一个被困在这件事上的。请考虑将问题重命名为“RSPEC找不到活动管理控制器”