在文件lib/outer/inner/inner.rb
中,我的ruby
模块定义如下:
module Outer
module Inner
NAME = "Inner Name"
end
end
并且在spec/lib/outer/inner/inner_spec.rb
我的测试如下:
require 'spec_helper'
RSpec.describe Outer::Inner, type: :none do
let(:name) { described_class::NAME }
it "has the right name" do
expect(name).to eql "Inner Name"
end
end
运行此测试会导致
Failure/Error: let(:name) { described_class::NAME }
NameError:
uninitialized constant Outer::Inner::NAME
测试可以很好地找到Outer::Inner
模块,因此肯定已经需要它。
为什么测试看不到Outer::Inner::NAME
?
答案 0 :(得分:0)
似乎Rails
正在使用lib
文件夹中的代码来覆盖代码内模块定义。
我将inner.rb
向上移动了文件夹层次结构中的一个级别,然后就可以了。
因此lib/outer/inner/inner.rb
变为lib/outer/inner.rb