Файл заглушки в rspec - PullRequest
       2

Файл заглушки в rspec

0 голосов
/ 27 сентября 2018

Я хочу заглушить этот метод, загрузив файл макета 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'

Как правильно заглушить файл?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы пытаетесь явно загрузить файл в самой первой строке вашего метода.Во-первых, вы можете поместить туда 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...