带轨道引擎的zeus test_helper

时间:2014-08-06 00:39:35

标签: ruby-on-rails ruby rspec zeus

如何修改我的zeus.json文件以在我正在与我的应用程序一起开发的引擎中运行rspec测试?

我的Rails应用程序看起来像这样:

/config
/engines
  /engine <-- this is the engine I'm developing inside the parent app
    /spec <-- here are the rspec tests
/custom_plan.rb
/zeus.json

通常情况下,我cd进入 engines / engine 并运行rspec来运行引擎测试(它有一个运行的虚拟应用程序)。

在顶层目录中运行zeus init会创建 zeus.json custom_plan.rb

{
  "command": "ruby -rubygems -r./custom_plan -eZeus.go",

  "plan": {
    "boot": {
      "default_bundle": {
        "development_environment": {
          "prerake": {"rake": []},
          "runner": ["r"],
          "console": ["c"],
          "server": ["s"],
          "generate": ["g"],
          "destroy": ["d"],
          "dbconsole": []
        },
        "test_environment": {
          "test_helper": {"test": ["rspec", "testrb"]}
        }
      }
    }
  }
}

require 'zeus/rails'

class CustomPlan < Zeus::Rails

  # def my_custom_command
  #  # see https://github.com/burke/zeus/blob/master/docs/ruby/modifying.md
  # end

end

Zeus.plan = CustomPlan.new

然后当我运行zeus start时,test_helper启动失败并带有

cannot load such file -- test_helper (LoadError)

我的猜测是因为我的规格目前位于 engines / engine / spec 中,并且父应用中没有“spec”文件夹。我希望能够更新我的custom_plan来运行这些测试。取而代之的是,我希望能够在引擎内部创建一个单独的计划和zeus.json,但是当我cd进入引擎/引擎并运行zeus init时,它仍然会创建配置文件。应用程序的根目录,所以我不确定如何让zeus“进入”我的引擎。

帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以设置test_helper的路径。这是宙斯宝石中的一种方法:https://github.com/burke/zeus/blob/master/rubygem/lib/zeus/rails.rb#L185

我刚才有同样的错误升级到rspec 3并且找不到任何使用zeus和rspec 3的文档,所以我设置了zeus.json:

{
  "command": "ruby -rubygems -r./custom_plan -eZeus.go",

  "plan": {
    "boot": {
      "default_bundle": {
        "development_environment": {
          "prerake": {"rake": []},
          "runner": ["r"],
          "console": ["c"],
          "server": ["s"],
          "generate": ["g"],
          "destroy": ["d"],
          "dbconsole": []
        },
        "test_environment": {
          "test_helper": {"spec": ["rspec"]}
        }
      }
    }
  }
}

和custom_plan.rb

require 'zeus/rails'

class CustomPlan < Zeus::Rails

  def spec(argv=ARGV)
    RSpec::Core::Runner.disable_autorun!
    exit RSpec::Core::Runner.run(argv)
  end
end

# set rails_helper for rspec 3
ENV['RAILS_TEST_HELPER'] = 'rails_helper'
Zeus.plan = CustomPlan.new

因此,您可以尝试将ENV['RAILS_TEST_HELPER']设置为test_helper文件的路径。