如何在我的测试中触发Railtie初始化器?

时间:2015-07-26 20:57:51

标签: ruby-on-rails ruby gem initialization railtie

我有自己的宝石,我的铁路看起来像......

class MyRailtie < Rails::Railtie
  initializer "my_railtie.configure_rails_initialization" do
    # some initialization behavior
  end
end

我尝试测试它,但在测试中,初始化程序永远不会被调用。而且我注意到我在另一个拥有初始化器的宝石中也有一些依赖,并且它们也没有被调用。

除了需要文件外,你知道我该怎么做吗?

2 个答案:

答案 0 :(得分:4)

由于初始化程序是Rails的一部分&#39;功能,您需要将该Railtie加载到Rails应用程序中,以便自动调用它。这通常是通过在spec文件夹中构建一个小的Rails应用程序来完成的,但这很难手动设置。幸运的是,这里有一颗名为combustion的优秀宝石,它使测试引擎(或带有轨道的宝石)变得轻而易举。它将负责为您设置Rails应用程序,并确保您的测试在该Rails环境中运行(包括运行该初始化程序)。

答案 1 :(得分:3)

在测试的beforesetup块中,您可以执行以下操作:

对于铁路

MyRailtie::Railtie.initializers.each(&:run)

对于引擎

MyEngine::Engine.initializers.each(&:run)