Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec can';找不到ActiveAdmin控制器_Ruby On Rails_Ruby_Rspec_Activeadmin - Fatal编程技术网

Ruby on rails Rspec can';找不到ActiveAdmin控制器

Ruby 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.

我正在尝试使用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.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找不到活动管理控制器”