7

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

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

我正在尝试对其进行测试,但在测试中,初始化程序永远不会被调用。而且我注意到我对另一个也有初始化程序的 gem 有一些依赖,它们也没有被调用。

你知道除了需要文件我应该做什么吗?

4

2 回答 2

7

由于初始化程序是 Rails 功能的一部分,因此您需要将该 Railtie 加载到 Rails 应用程序中,以便自动调用它。这通常是通过在您的 spec 文件夹中构建一个小型 Rails 应用程序来完成的,但是手动设置会很痛苦。幸运的是,有一种叫做燃烧的优秀宝石可以让测试引擎(或带有轨道的宝石)变得轻而易举。它将负责为您设置该 Rails 应用程序,并确保您的测试在该 Rails 环境中运行(包括运行该初始化程序)。

于 2015-07-26T23:02:45.627 回答
6

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

对于 Railtie

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

对于引擎

MyEngine::Engine.initializers.each(&:run)
于 2018-04-24T18:19:54.620 回答