2

假设你有一个类似的 YAML 配置文件:

defaults: &defaults
  # registration form
  birth_date: true
  address: true
  zip: true
  city: true
  state: true
  # other stuff
  send_email_notification_to_users: true

production:
  <<: *defaults

development:
  <<: *defaults

test:
  <<: *defaults

它的加载方式与 Railcast #85 中的解释类似: http ://railscasts.com/episodes/85-yaml-configuration-file

假设您需要测试应用程序在不同设置下的执行情况,您会怎么做?

使用 Django,可以在单元测试期间临时更改设置: https ://docs.djangoproject.com/en/dev/topics/testing/overview/#overriding-settings

是否可以使用 Rails 做类似的事情?

4

2 回答 2

2

动态更改配置,可能使用 before 和 after 块:

before(:all) do 
  @old_config = APP_CONFIG
  APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")["production"]
end
after(:all) do
  APP_CONFIG = @old_config
end
于 2013-01-28T14:49:27.687 回答
2

如果您完全按照 Railscast #85 中的说明实现它,只需像这样分配新值:

APP_CONFIG['perform_authentication'] = false
# or
APP_CONFIG['my_fancy_key'] = 'my fancy value'

请记住,在您的测试用例完成后,该值不会自动更改回来,因此它将对所有后续测试用例保持有效。

于 2013-01-28T14:52:03.233 回答