RSpec无法在模块内部找到类

时间:2018-08-28 14:42:52

标签: ruby-on-rails rspec

我在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

有人可以帮我吗?

2 个答案:

答案 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 语句)。愿此答案对其他人有所帮助。