Ce passe spec mais échoue après locale introduction (l'application fonctionne cependant):Rails vue rspec avec locale, Aucun itinéraire correspond
require 'spec_helper'
describe "products/show" do
before do
assign(:product, mock_model("Product", name: "Car", description: "petrol engine"))
end
it "renders name" do
render
expect(rendered).to match /Car/
end
end
Puis-je ajouter une portée aux routes pour inclure les paramètres régionaux: .. .
scope "/:locale" do
resources :products
root :to => 'products#index'
end
...
Dans contrôleur d'application je définis:
def self.default_url_options(options={})
logger.debug "default_url_options is passed options: #{options.inspect}\n"
I18n.locale = 'en' # fixed for tests
{ :locale => I18n.locale}
end
Dans le navigateur l'application fonctionne à nouveau avec des chemins comme /fr/produit/1 pour rendre le modèle de spectacle
Mais mon test échoue ci-dessus:
1) products/show renders name Failure/Error: render ActionView::Template::Error: No route matches {:action=>"edit", :controller=>"products", :locale=>#} # ./app/views/products/show.html.erb:14:in
_app_views_products_show_html_erb__333746538_80999240' # ./spec/views/products/show.html.erb_spec.rb:10:in
block (2 levels) in '
Pourquoi le test échoue lors de l'application fonctionne?
Comment le faire passer?
Il semble que rspec ne respecte pas default_url_options. Voir https://github.com/rspec/rspec-rails/issues/255 – Ernst