如何解决如何确定Rails控制器的默认操作?
| 我正在进行一项功能测试,该功能需要断言某些控制器集中存在某个XHTML标签。我基本上是这样做的:class ApplicationControllerTest < ActionController::TestCase
def setup
@controller = ApplicationController.new
end
# [...]
def test_foo_bar_and_baz_include_stylesheet
[FooController,BarController,BazController].each do |controller|
@controller = controller.new
get :show
assert_select \'head > link[rel=\"stylesheet\"]\'
end
end
end
问题在于,并非所有控制器都具有“ 1”动作。我需要做的是询问控制器或控制器的默认操作的路由配置,然后调用“ 2”。
更新:Joseph Silvashy是正确的:我最终将控制器get
分离到了单独的测试用例中。解决“默认”路由问题已经很糟糕了,直到我发现我的某些路由附加了条件,并且我必须解析它们才能进行正确的get
调用。最后,Rails功能测试不能很好地处理在同一测试用例中多次调用deal2 don的情况,特别是当这些调用击中多个控制器时。 :(
我认为这里的课程是我们都心生的一课,但有时很难接受:如果代码看起来很繁琐,那么您可能做错了。 ;)
解决方法
控制器没有“默认”视图或动作,此外,动作可以命名为任意名称,它们不必是标准的
index
,show
,new
等。
对于您要测试的每个控制器,我可能不得不采取“ 9”适当的措施。即使现在每个测试都具有相同的要求,但每个测试都有可能会有所不同,尽管我认为为每个操作编写一个测试是有意义的。
,尝试使用response_to函数:http://www.ruby-doc.org/core/classes/Object.html#M001005
检查方法是否退出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。