查看文章 |
Rails提供的测试routes的helper有3个: assert_generates(expected_path, options, defaults={}, extras = {}, message=nil) assert_recognizes(expected_options, path, extras={}, message=nil) assert_routing(path, options, defaults={}, extras={}, message=nil) 还有个更重要的问题是,测试文件要放在哪里? 应该放在 test/integration 目录下。先有个概念:unit 是用来测试 model,functional 用来测试 controller 及其 actions 的,integration 是用来做跨多个 controller 测试。functional 比 integration 要快些,因为它掉过了一些初始化操作,比如roules的初始化。所以只有 integration 才适合做 routes 测试。 # test/integration/routes_test.rb class RoutesTest < ActionController::IntegrationTest # test subdomains assert_recognizes_uri opts,"http://post.myapp.com/show/1" assert_recognizes_uri opts,"http://post.myapp.com/1" # test index action assert_recognizes_uri opts,"http://www.myapp.com/post" assert_recognizes_uri opts,"http://post.myapp.com/" assert_recognizes_uri opts,"http://post.myapp.com/index" end |