Pour obtenir une liste des questionnaires j'utiliser lecomment puis-je tester rspec un contrôleur avec la route englobement
GET "/questionnaires/user/1/public/true/mine/true/shared/true"
dans routes.rb Je
/questionnaires/*myparams(.:format) {:controller=>"questionnaires", :action=>"list"}
Le contrôleur utilise la route pour créer un englobement requête dans la méthode de la liste
class QuestionnairesController < ApplicationController
before_filter :authenticate
def list
myparams = params[:myparams].split("/").to_h
end
# ...
end
Je suis en train de créer les cas de test pour toutes les options dans un fichier de spécification
describe "GET list" do
it "returns the list of questionnaires for the user" do
get :list
# ...
end
end
ce que je reçois quand je lance rspec est
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
La question est de savoir comment écrivez-vous le fichier de spécification pour transmettre les paramètres de globbed à rspec. J'aime faire quelque chose comme ceci:
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
et changer les paramètres pour tester les différents cas
J'ai fini en utilisant get: liste: myParams => « rspec/vrai/utilisateur /#{@user.id}/public/true/mine/false/shared/false "sans la scission, la scission se fait à l'intérieur du contrôleur – user567592