0

我有一个辅助类 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,导轨 3.2.13,rspec 2.13.0

4

1 回答 1

3

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

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

我认为这个问题与这个问题有关

于 2013-06-03T16:43:13.170 回答