環境:Rails 3.1.1 and Rspec 2.10.1
外部YAMLファイルを介してすべてのアプリケーション構成をロードしています。私の初期化子(config/initializers/load_config.rb)
は次のようになります
AppConfig = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV]
そして私のYAMLファイルはconfig/config.ymlの下にあります
development:
client_system: SWN
b2c_agent_number: '10500'
advocacy_agent_number: 16202
motorcycle_agent_number: '10400'
tso_agent_number: '39160'
feesecure_eligible_months_for_monthly_payments: 1..12
test:
client_system: SWN
b2c_agent_number: '10500'
advocacy_agent_number: 16202
motorcycle_agent_number: '10400'
tso_agent_number: '39160'
feesecure_eligible_months_for_monthly_payments: 1..11
そして、私はこれらの値に次のようにアクセスします。AppConfig['feesecure_eligible_months_for_monthly_payments']
私のテストの1つではAppConfig['feesecure_eligible_months_for_monthly_payments']
、別の値を返す必要がありますが、これを実現する方法がわかりません。私は運が悪かった次のアプローチを試しました
describe 'monthly_option_available?' do
before :each do
@policy = FeeSecure::Policy.new
@settlement_breakdown = SettlementBreakdown.new
@policy.stub(:settlement_breakdown).and_return(@settlement_breakdown)
@date = Date.today
Date.should_receive(:today).and_return(@date)
@config = mock(AppConfig)
AppConfig.stub(:feesecure_eligible_months_for_monthly_payments).and_return('1..7')
end
.....
end
私のそれぞれのクラスでは、私はこのようなことをしています
class Policy
def eligible_month?
eval(AppConfig['feesecure_eligible_months_for_monthly_payments']).include?(Date.today.month)
end
....
end
誰かが私を正しい方向に向けてくれませんか!