rspec + rails_admin在/ lib中测试自定义rails_admin操作会给出错误

时间:2018-09-27 14:21:48

标签: ruby-on-rails ruby rspec rails-admin

rspec文件夹中创建自定义rails_admin动作之前,我的lib测试执行得很好。

用于创建仪表板的自定义操作如下:/lib/rails_admin.rb

module RailsAdmin
  module Config
    module Actions
      class Dashboard < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)

        register_instance_option :root? do
          true
        end
      end
    end
  end
end

它给出了预期的结果,即:新的仪表板。 但是现在当我运行rspec测试(任何测试)时,会出现以下错误:

  

Bundler :: GemRequireError:

     

尝试加载gem'rails_admin'时出错。

     

宝石加载错误是:未初始化的常数   RailsAdmin :: Config :: Actions :: Base

在运行任何测试前,rspec会从lib文件夹中加载所有文件,但是由于某种原因找不到RailsAdmin。

要摆脱错误,我尝试手动添加rails_admin文件

require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdmin
  module Config
    module Actions
      class Dashboard < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)

        register_instance_option :root? do
          true
        end
      end
    end
  end
end

它不能解决问题,只是将错误移至下一级并给出以下错误:

  

失败/错误:需要File.expand_path('../../ config / environment',   文件

     

NoMethodError:未定义的方法config' for RailsAdmin:Module ./config/initializers/rails_admin.rb:1:in'

rails_admin.rb第一行很简单:

RailsAdmin.config do |config|

为什么rspec无法正确加载rails_admin gem?

1 个答案:

答案 0 :(得分:0)

尽管我不知道这为什么起作用,但我找到了一个可行的解决方案:

我没有创建lib/rails_admin.rb,而是在其中创建了一个config子文件夹和一个actions子文件夹,然后将我的rails_admin.rb文件放入其中。

我得到了以下树:lib/config/actions/rails_admin.rb。您还需要在config/initializers/rails_admin.rb中更改此文件的路径:

在我的情况下,我有require Rails.root.join('lib', 'rails_admin.rb')并将其更改为require Rails.root.join('lib', 'config', 'actions', 'rails_admin.rb')

然后运行bundle exec rspec即可正常工作。