当我按uninitialized constant
运行此rspec时出现rspec foo_spec.rb
错误。
# foo.rb
class Foo
FILENAME = "filename.txt"
def filename
FILENAME
end
end
# foo_spec.rb
require_relative 'foo'
describe Foo do
describe "#filename" do
it "should have right filename" do
foo = Foo.new
expect(foo.filename).to eq FILENAME
end
end
end
我确认是否将FILENAME
更改为"filename.txt"
,测试通过。
我应该如何在rspec中使用常量值?
答案 0 :(得分:1)
这不是一个rspec问题,它是一个Ruby问题。您需要使用声明的类来限定常量。 FILENAME
应为Foo::FILENAME
。
您只能在FILENAME
的上下文中通过Foo
引用它。否则,假设我有一个类Bar
,它也定义了一个名为FILENAME
的常量,Ruby怎么能找出我指的是哪一个?