我有自己的宝石,我的铁路看起来像......
class MyRailtie < Rails::Railtie
initializer "my_railtie.configure_rails_initialization" do
# some initialization behavior
end
end
我尝试测试它,但在测试中,初始化程序永远不会被调用。而且我注意到我在另一个拥有初始化器的宝石中也有一些依赖,并且它们也没有被调用。
除了需要文件外,你知道我该怎么做吗?
答案 0 :(得分:4)
由于初始化程序是Rails的一部分&#39;功能,您需要将该Railtie加载到Rails应用程序中,以便自动调用它。这通常是通过在spec文件夹中构建一个小的Rails应用程序来完成的,但这很难手动设置。幸运的是,这里有一颗名为combustion的优秀宝石,它使测试引擎(或带有轨道的宝石)变得轻而易举。它将负责为您设置Rails应用程序,并确保您的测试在该Rails环境中运行(包括运行该初始化程序)。
答案 1 :(得分:3)
在测试的before
或setup
块中,您可以执行以下操作:
MyRailtie::Railtie.initializers.each(&:run)
MyEngine::Engine.initializers.each(&:run)