要获得问卷清单,请使用
GET "/questionnaires/user/1/public/true/mine/true/shared/true"
在routes.rb中我有
/questionnaires/*myparams(.:format) {:controller=>"questionnaires", :action=>"list"}
控制器使用路由通配符在列表方法
中创建查询class QuestionnairesController < ApplicationController
before_filter :authenticate
def list
myparams = params[:myparams].split("/").to_h
end
# ...
end
我正在尝试为spec文件中的所有选项创建测试用例
describe "GET list" do
it "returns the list of questionnaires for the user" do
get :list
# ...
end
end
我运行rspec时得到的是
Failures:
1) QuestionnairesController List GET list returns the list of questionnaires for the user
Failure/Error: get :list
No route matches {:controller=>"questionnaires", :action=>"list"}
# ./spec/controllers/questionnaires_controller_spec.rb:20
问题是如何编写spec文件以将globbed参数传递给rspec。我喜欢这样做:
describe "GET list" do
it "returns the list of questionnaires for the user" do
get :list, "/user/1/public/true/mine/true/shared/true"
end
end
并更改参数以测试不同的情况
答案 0 :(得分:1)
globbing发生在调度程序中,因此在调用控制器时已经分配了params。当达到控制器操作时,全局参数应该已经分成params[:myparams]
中的数组。
如果你想在控制器中测试它,只需按照调度员的方式设置params散列:
describe "GET 'list'" do
it "should be successful" do
get :list, :myparams => "user/1/public/true/mine/true/shared/true".split("/")
response.should be_success
end
end