我想通过加载位于不同目录中的样机yaml文件来对这种方法进行存根处理。
存根的原始配置:
def load_environment_config(gateway, trx_type)
@config = YAML.load_file("config/#{env}.yml")["#{env.upcase}"]
raise "\n\nMissing gateway configuration for #{gateway} in file config/#{env}.yml!\n" unless @config[gateway]
@terminal = terminal_for(@config, gateway, trx_type)
@url = URI.parse("#{@config['processing_url']}#{@terminal['token']}")
end
我尝试过:
let(:yaml_file) { YAML::load(File.read(File.join('spec', 'fixtures', 'yaml', 'test_env.yml'))) }
let(:config) { yaml_file['TEST_ENV'] }
allow(request_builder).to receive(:config).with(config)
错误:
Errno::ENOENT:
No such file or directory @ rb_sysopen - config/test_env.yml
# ./models/request_builder.rb:50:in `load_environment_config'
对文件存根的正确方法是什么?
答案 0 :(得分:0)
您正试图在方法的第一行中显式加载文件。您可以将test_env.yaml
首先放在config
目录中。
您还可以存根YAML#load_file
:
let(:yaml) { YAML.load(File.read(....) }
allow(YAML).to \
receive(load_file).
with("config/#{env}.yml")).
and_return(yaml)