Rails:在单元/功能测试中更改运行时从 YAML 加载的配置



假设你有一个类似的 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 做类似的事情?

如果你完全

按照 Railscast #85 中的解释实现它,只需像这样分配新值:

APP_CONFIG['perform_authentication'] = false
# or
APP_CONFIG['my_fancy_key'] = 'my fancy value'
请记住,测试用例

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

动态更改配置,可能使用块之前和之后:

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

相关内容

  • 没有找到相关文章