我在app / services / a / b / c.rb中有一个课程
Rspec文件位于spec / services / a / b / c_spec.rb
我的课看起来像这样:
module a
module b
class c
end
end
end
我的rspec如下:
require 'rails_helper'
describe a::b::c do
describe '#test' do
it 'should test func' do
end
end
end
但是每次运行测试时,都会出现此错误:
未初始化的常量a :: b :: c
有人可以帮我吗?
答案 0 :(得分:1)
@Abhishek我觉得问题在于,Rails不会要求/加载您的课程。 尝试在spec_helper.rb中要求该文件。
或者,您可以将该文件夹添加到eager_load_paths并在config / environment / test.rb中将config.eager_load = true设置
您可以通过在测试环境中使用Rails控制台来确认我的直觉,然后检查调用A::B::C
是否为uninitialized constant A::B::C
。
现在尝试通过要求app/services/A/B/C.rb
文件进行操作,这一次它不会给出错误提示。
答案 1 :(得分:1)
我遇到了完全相同的问题,解决方法非常简单。我忘了放:
require "rails_helper"
在测试文件中。添加 require
语句后,它正确加载了类。 (我知道提问者正确地添加了 require 语句)。愿此答案对其他人有所帮助。