Как мне имитировать конфигурацию приложения с помощью rspec?

#unit-testing #ruby-on-rails-4 #rspec #configuration #mocking

#модульное тестирование #рубин на рельсах-4 #rspec #конфигурация #осмеяние

Вопрос:

Я использую Rails 4.2. У меня есть эта строка в моем приложении

 APP_CONFIG.ui[Rails.env].activity  

Это обычно загружается из файла конфигурации (ui.yml), который содержит это

 test:  activity: https://prequal.dignifi.local  

Как мне высмеять это в rspec? Я попробовал следующее

 allow(Rails.configuration)  .to receive(:[])  .with(:ui)  .and_return(my_hash)  

Но я получаю ошибку

 #lt;Rails::Application::Configuration:0x000000000a005e10 @root=#lt;Pathname: … does not implement: []  

Комментарии:

1. Является ли APP_CONFIG равным Rails.configuration? Если нет, то APP_CONFIG должен быть заглушен для получения [] . Поскольку у вас там есть цепочка методов, это может быть что-то вроде этого allow(APP_CONFIG).to( receive(:ui).and_return( double.tap do |dbl| allow(dbl).to receive(:[]).with(Rails.env).and_return(my_hash) end ) ) , хотя я ее не тестировал