main_app Rspec中的命名空间未知,仅在单元套件测试中(批处理)

时间:2013-04-23 16:07:43

标签: ruby-on-rails ruby-on-rails-3 rspec

我有一个辅助类ApplicationHelper,它有一个方法build_links()。我有另一个类AppleClass引用该方法。

AppleClass 
  def foo
    ....
    build_links
  end
end

ApplicationHelperClass
   def build_links
     main_app.blah_path(1)
   end
end

这里的复杂功能是有一个引擎,所以我通常会明确地引用“main_app.blah_path”而不仅仅是“blah_path”。

针对foo的测试在其文件中以及当我运行所有帮助程序时自行传递。但是,当我将它包含在所有单元测试中时,它会失败 - “rake spec:suite:unit”,以及我们的整个套件。所有Apple测试都通过,所有ApplicationHelper测试都通过。唯一失败的是当一个方法引用另一个方法时,在路由中,引擎外部,在整个套件中。

`undefined local variable or method `main_app' for #  
<RSpec::Core::ExampleGroup::Nested_45::Nested_1:0x007fc134b30130>`

我怀疑测试帮助程序或某些配置没有及早加载引擎的路由,因此链接到“main_app”没有意义。如果我删除main_app,测试将失败,直到它在主套件中运行。

有没有人有关于排除故障的提示?另外,我可以在test_helper中以某种方式启动路由吗?

ruby​​-1.9.3-p385,rails 3.2.13,rspec 2.13.0

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,发现如果我将此方法添加到我的Controller RSpec测试用例的顶部,那么它就完全解决了这个问题。

def main_app
  Rails.application.class.routes.url_helpers
end

我认为此问题与this question

有关