9
votes

chemin ne fonctionne pas correctement lors de l'utilisation de Capybara

J'utilise des rails 3.0.5, RSPEC2 avec la dernière Capybara.

Configuration des itinéraires comme: p> xxx pré>

dans application_controller J'ai ceci: p> xxx pré>

donc dans mes vues, je peux utiliser p> xxx pré>

sans aucun problème. p>

mais quand je fais la même chose dans La visite de Capybara tente d'utiliser le 1 pour la locale et non pour l'ID. Cela ne fonctionne que lorsque j'utilise P> xxx pré>

ou p>

visit dossier_path(:id => 1)


5 commentaires

Le titre de votre question indique qu'il s'agit d'une réponse plutôt que d'une question. Après avoir lu le contenu, cette impression n'a pas beaucoup changé. Que cherchez-vous exactement?


Je cherche une réponse pourquoi j'ai besoin d'utiliser le hachoir sale que j'ai montré et ce que je peux faire, de sorte que je puisse utiliser la méthode comme dans les vues (donc sans le hachoir sale d'avoir à ajouter nul ou explicitement passer: ID => ...).


Désolé, je viens de voir le titre était faux. Au lieu de "maintenant", cela aurait dû être "non", je viens de le corriger;)


Il semble que Capybara ne passe pas via votre contrôleur d'application, c'est pourquoi il ne peut pas passer correctement vos chemins. Ce que vous pouvez faire est de faire une aide d'étape pour réparer vos itinéraires pour Capybara


Pourriez-vous s'il vous plaît me donner un exemple? Il ne devrait pas seulement fonctionner pour dossier_path, mais n'importe quelle méthode de chemin. Si vous l'ajoutez comme une réponse, je peux voter pour cela :)


4 Réponses :


-1
votes

en face comme indiqué ici sous à l'aide de Capybara avec RSPEC forte> la seule façon dont je J'ai été capable de le faire fonctionner est d'écrire xxx pré>

donc pour vous, il doit em> être p>

visit dossier_path(:id => "1")


1 commentaires

Désolé, je ne vois pas comment cela est lié à ma question concernant les options d'URL par défaut non utilisées?



2
votes

Malheureusement, la génération d'itinéraire se produit en dehors du contrôleur d'applications. Et Capybara ne fait pas de magie pour fournir des options d'URL par défaut à partir de celui-ci aux aides d'acheminement.

Mais vous pouvez spécifier les paramètres régionaux par défaut dans vos routres.rb xxx

et maintenant Si vous ne passez pas: option locale à une aide de route Il sera par défaut à "es" . En fait, il n'est pas nécessaire de garder deffaulau_url_options plus dans votre contrôleur.


2 commentaires

Que diriez-vous des valeurs par défaut qui dépendent de l'exemple actuel_utilisateur?


C'est une mauvaise réponse, même je l'ai avancé au début. Il fait passer vos tests, mais la moitié du lien dans l'application elle-même est bloquée avec des paramètres régionaux par défaut.



7
votes

J'ai rencontré un problème similaire. Vous pouvez définir le défaut_url_options dans un bloc avant que celui-ci dans la demande Spécifications:

 before :each do
   app.default_url_options = { :locale => :es }
 end


1 commentaires

Juste pour mettre un peu plus de contexte pour cela: le code ci-dessus doit être quelque part dans le rspec.configure do | config | bloc.



2
votes

Je couronne des rails 3.2.6 Et j'utilise une technique que j'ai trouvée ici https : //github.com/rspec/rspec-Rails/issues/255 sous le commentaire de Phoet. Il suffit de mettre cela quelque part dans / SPEC / Support et il devrait couvrir toutes vos spécifications

class ActionView::TestCase::TestController
  def default_url_options(options={})
    { :locale => I18n.default_locale }
  end
end

class ActionDispatch::Routing::RouteSet
  def default_url_options(options={})
    { :locale => I18n.default_locale }
  end
end


0 commentaires