在“之前”运行 rspec在 Rails 初始化程序运行之前阻塞

发布于 2024-12-06 17:12:23 字数 90 浏览 0 评论 0原文

我想在 Rails 初始化程序运行之前运行 rspec before 块来设置一些内容,这样我就可以测试初始化​​程序应该做什么。这可能吗?

I would like to run an rspec before block to set some stuff up before the Rails initializers run, so I can test what an initializer should be doing. Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倥絔 2024-12-13 17:12:23

如果初始化程序中的逻辑足够复杂,则应该对其进行测试,您应该将其提取到一个帮助程序中,您可以在不处于初始化程序上下文中的情况下隔离和测试该帮助程序。

complex_initializer.rb

config.database.foo = calculate_hard_stuff()
config.database.bar = other_stuff()

您可以将其提取到可测试的帮助程序中(lib/config/database.rb)

module Config::DatabaseHelper
  def self.generate_config
    {:foo => calculate_hard_stuff, :bar => other_stuff)
  end

  def calculate_hard_stuff
    # Hard stuff here
  end
end

...然后只需在初始化程序中连接配置数据

db_config_values = Config::DatabaseHelper.generate_config
config.database.foo = db_config_values[:foo]
config.database.bar = db_config_values[:bar]

...并在单独的测试中测试复杂的配置确定/计算,您可以在其中进行复杂的配置确定/计算可以隔离输入。

describe Config::DatabaseHelper do
  describe '.calculate_hard_stuff' do
    SystemValue.stubs(:config => value)
    Config::DatabaseHelper.calculate_hard_stuff.should == expected_value
  end
end

If the logic in your initializers is complex enough it should be tested, you should extract it into a helper that you can isolate and test without being in the context of the initializer.

complex_initializer.rb

config.database.foo = calculate_hard_stuff()
config.database.bar = other_stuff()

You could extract that into a testable helper (lib/config/database.rb)

module Config::DatabaseHelper
  def self.generate_config
    {:foo => calculate_hard_stuff, :bar => other_stuff)
  end

  def calculate_hard_stuff
    # Hard stuff here
  end
end

...then just wire up the configuration data in your initializer

db_config_values = Config::DatabaseHelper.generate_config
config.database.foo = db_config_values[:foo]
config.database.bar = db_config_values[:bar]

...and test the complex configuration determination/calculation in a separate test where you can isolate the inputs.

describe Config::DatabaseHelper do
  describe '.calculate_hard_stuff' do
    SystemValue.stubs(:config => value)
    Config::DatabaseHelper.calculate_hard_stuff.should == expected_value
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文