我正在模块中编写一个类
#lib/app/models/foo.rb
module App::Models
class Foo
def bar
true
end
end
end
当我试图为它运行规范时
#spec/lib/app/models/foo_spec.rb
require_relative '../../../../lib/app/models/foo'
describe App::Models::Foo do
end
我收到以下错误:
rspec spec/lib/app/models/foo_spec.rb
/Users/frojas/git/tmp/lib/app/models/foo.rb:1:in `<top (required)>': uninitialized constant App (NameError)
from /Users/frojas/git/tmp/spec/lib/app/models/foo_spec.rb:1:in `require_relative'
我不太明白我想做错了。
答案 0 :(得分:1)
在使用之前定义模块
。module App
module Models
class Foo
def bar
true
end
end
end
end
这样您就可以正确定义App
模块,然后是Models
模块,然后定义Foo
类。
答案 1 :(得分:1)
module App::Models
表示您在Models
模块中定义App
模块。但在此之前,您还需要定义模块App
。由于你没有这样做,所以错误未初始化的常量App(NameError)它会冒泡。
第一的
module App
# your code
end
然后
module App::Models
class Foo
def bar
true
end
end
end
或者如下所示:
module App
module Models
class Foo
def bar
true
end
end
end
end