#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 ) )
, хотя я ее не тестировал