【发布时间】:2018-09-27 14:21:47
【问题描述】:
在lib 文件夹中创建自定义rails_admin 操作之前,我的rspec 测试执行良好。
用于创建仪表板的自定义操作如下所示:/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' 时出错。
Gem 加载错误是:未初始化的常量 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?
【问题讨论】:
-
你的 lib 路径添加到 rspec 加载路径了吗?如果我记得,默认情况下不会这样做。
-
@BillyKimble lib 不在 rspec 加载路径中,如果我没有错,因为 rspec 3.x lib 已自动加载(关于该问题的讨论 github.com/rspec/rspec-core/issues/1983)。我可以通过从 LOAD_PATH 中删除 lib 文件夹来运行 rspec 测试,但这只是临时解决方案。
-
@Sharj 你有没有找到任何解决方案?我也有同样的问题。
-
@JulesCorb 没有找到解决方案,而是临时修复。我从加载的路径中删除了
lib/rails_admin.rb文件,以便我可以测试其他所有内容。将$LOAD_PATH.delete_if { |p| File.expand_path(p) == File.expand_path("./lib/rails_admin.rb") }放在rails_helper.rb之前configure。
标签: ruby-on-rails ruby rspec rails-admin