rails proyecto libro formularios español crear ruby-on-rails railstutorial.org

ruby on rails - proyecto - Rspec y rutas con nombre



scaffold ruby on rails (6)

Soy bastante nuevo en los rieles, y trato de seguir el railstutorial. Todo va bien, excepto por mis pruebas que no pueden pasar las rutas nombradas (5.3.3)

Mis rutas.rb:

SampleApp::Application.routes.draw do resources :users match ''/signup'', to: ''users#new'' match ''/help'', to: ''static_pages#help'' match ''/about'', to: ''static_pages#about'' match ''/contact'', to: ''pages#contact'' root to: ''static_pages#home'' #Commented stuff

Mis primeras pruebas (spec / controllers / static_pages_controller_spec.rb):

describe "Static pages" do subject { page } shared_examples_for "all static pages" do it { should have_selector(''h1'', text: heading) } it { should have_selector(''title'', text: full_title(page_title)) } end describe "Home page" do before { visit root_path } let(:heading) { ''Sample App'' } let(:page_title) { ''Home'' } it_should_behave_like "all static pages" end #Other tests

El spec_helper.rb parece (sin todas las cosas comentadas)

ENV["RAILS_ENV"] ||= ''test'' require File.expand_path("../../config/environment", __FILE__) require ''rspec/rails'' require ''rspec/autorun'' Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} RSpec.configure do |config| config.fixture_path = "#{::Rails.root}/spec/fixtures" config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = false end

Los errores que recibo de rspec son todos como este:

Static pages Home page it should behave like all static pages Failure/Error: before { visit root_path } NameError: undefined local variable or method `root_path'' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_1::Nested_1:0x00000004a12210> Shared Example Group: "all static pages" called from ./spec/controllers/static_pages_controller_spec.rb:17 # ./spec/controllers/static_pages_controller_spec.rb:13:in `block (3 levels) in <top (required)>''

Ya traté de usar

include Rails.application.routes.url_helpers

en el spec_helper, pero cambió mis errores a

Static pages Home page it should behave like all static pages Failure/Error: Unable to find matching line from backtrace SystemStackError: stack level too deep # /usr/lib/ruby/1.9.1/forwardable.rb:185

También probé una forma diferente de cambiar el nombre de mis rutas, pero ninguna de ellas funcionó. Estoy de vuelta a la versión tutorial.

Si puede ser de alguna ayuda para encontrar qué es exactamente un problema, estoy en Ubuntu 11.10, con rieles 3.2.1 y ruby ​​1.9.2p290. Espero que puedan ayudarme. Pasé bastante tiempo buscando una solución en Google y no encontré ninguna ^^ ''


Deberías haber usado

rails generate rspec:install

en lugar de

rspec --init

y no habría tenido que modificar el archivo de configuración.

Sin embargo, no lo hagas ahora o tu aplicación se romperá y tendrás que perder más tiempo para averiguar por qué se rompió.


Google me trajo aquí, incluso mi mensaje de error no se ajusta al 100%.

En mi caso la visit comando de Capibara es desconocida ...

Error:

NoMethodError: undefined method `visit'' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xa49a73c>

Como Capybara 2.0 uno tiene que usar las spec/features carpeta, los comandos de capybara ya no funcionan en las spec/requests carpeta.

Eso me ayudó: http://alindeman.github.com/2012/11/11/rspec-rails-and-capybara-2.0-what-you-need-to-know.html

Espero que encuentres esto útil.


Las rutas con nombre deberían funcionar si coloca lo siguiente en rspec_helper.rb:

RSpec.configure do |config| config.include Rails.application.routes.url_helpers ... end

¿Así es como se configura?


No creo que tenga acceso a rutas con nombre dentro de las especificaciones de su controlador rspec. Sin embargo, podría simplemente visitar (''/''), que es el equivalente de root_path.


Tuve el mismo problema, con el mismo Tutorial. Resulta que solo necesitaba reiniciar el servicio Spork y todo funcionó bien.

La solución publicada por Tom L funcionó para mí, pero cuando quité esa línea y reinicié Spork, eso también solucionó el problema.

¡Espero que ayude a otras personas que desconfían de desviarse del código del tutorial!


en rspec_helper.rb:

RSpec.configure do |config| config.include Rails.application.routes.url_helpers ... end