我创建了一个常量,其中包含我正在处理的应用的API密钥。它在rails控制台中工作,但我很难在测试中使用它。我必须使用Bing所以我添加了这样的API:
# config/bing.yml
development:
secret: 1234
test:
secret: 5678
production:
secret: abcd
# config/initializers/bing.rb
BING_CONFIG = YAML.load_file("#{::Rails.root}/config/bing.yml")[::Rails.env]
我如何确保BING_CONFIG
加载到rspec?目前,它在我的rails控制台中正常工作和加载,但是当我运行我的规范时,我收到以下错误:
uninitialized constant SearchEngine::BING_CONFIG
答案 0 :(得分:0)
BING_CONFIG = …
字符串是否位于您的班级/模块SearchEngine
中?如果是,请尝试
require 'search_engine'
在rspec
文件的顶部(或如何调用包含该类的文件)。如果不是,请修复名称空间的问题,例如:
SearchEngine::BING_CONFIG = …
答案 1 :(得分:0)
据我所知,只要在config/initializers
中配置这样的初始化,即使在rspec运行中也应该加载它。但它仍然没有用......
由于您的错误输出显示SearchEngine
名称,我猜您已将初始化程序包装在模块中。
如果是这种情况,则应在上述分配之前引入SearchEngine
模块名称。但是当您引入模块名称时,为了使Rails的自动加载器满意,您必须遵循Rails根据命名空间层次结构命名文件(和类/模块名称)的方式。这取决于SearchEngine
的定义方式。您想如何定义模块名称?