我有一个辅助类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
答案 0 :(得分:3)
我遇到了同样的问题,发现如果我将此方法添加到我的Controller RSpec测试用例的顶部,那么它就完全解决了这个问题。
def main_app
Rails.application.class.routes.url_helpers
end
我认为此问题与this question
有关