我想在 rspec 中创建一个 get 请求。
get :exec, {:query=>"bla",
:id => "something",
:user_id => "user"
}
这会构建一个类似以下的 URL:/user/query/something/exec?query=bla
问题是我的控制器检查它收到的请求,并且 url 必须如下所示:/user/query/something/_XXX_/exec?query=bla
我怎样才能在 rspec 中做这样的事情? (XXX 被硬编码在routes.rb 文件中。)
我假设您指的是控制器规格。
当您像示例中那样传递散列时,键将与路由中的变量进行匹配。对于任何与路由不匹配的键,键/值对将作为查询字符串附加。
例如,假设您的规范中有这样的内容:
get :exec, :query => 'foo', :id => '1', :user_id => 42
你的路线中有这个(Rails 3 风格):
match '/exec/:user_id/:id' => 'whatever#exec'
然后,规范将替换您给出的键/值对,并使用以下路径模拟请求:
/exec/42/1?query=foo
因此,要将规范连接到路由,只需确保将路由中的变量名称与规范请求中的参数正确匹配即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)