with tutorial tests test run rails how ruby-on-rails rspec jruby

ruby on rails - tutorial - Visite el método que no se encuentra en mi rspec



rspec with rails (6)

Mi aplicación web java se ejecuta en tomcat en http: // localhost: 8080 /

Escribiendo mi primera especificación, home_spec:

require ''spec_helper'' describe "home" do it "should render the home page" do visit "/" page.should have_content("hello world") end end

Y corriendo:

rspec

Yo obtengo:

F Failures: 1) home should render the home page Failure/Error: visit "/" NoMethodError: undefined method `visit'' for #<RSpec::Core::ExampleGroup::Nested_1:0x242870b7> # ./spec/home/home_spec.rb:7:in `(root)'' Finished in 0.012 seconds 1 example, 1 failure Failed examples: rspec ./spec/home/home_spec.rb:6 # home should render the home page

¿No debería funcionar esto porque he incluido el capibara en el spec_helper?

¿Cómo sabrá visitar la URL correcta? ¿y si mi url es localhost: 3030 o localhost: 8080?

Mi gemfile:

source ''http://rubygems.org'' gem "activerecord" gem "rspec" gem "capybara" gem "activerecord-jdbcmysql-adapter"

Mi spec_helper:

require ''capybara/rspec''


De forma predeterminada, la DSL de capybara se incluye automáticamente si el archivo está en especificaciones / solicitudes, especificaciones / integración o si el grupo de ejemplos tiene :type => :request .

Debido a que su archivo está en spec / home, los ayudantes de capibara no se incluyen. Puedes conformarte a uno de los patrones anteriores o agregar include Capybara::DSL también debería ser el truco (es posible que también necesites replicar algunas de las cosas before(:each) que se configurarían).


Primero échale un vistazo

Si no tienes éxito,

Agregue este código al final de su ayudante de especificaciones realmente fuera del bloque RSpec.configure también

module ::RSpec::Core class ExampleGroup include Capybara::DSL include Capybara::RSpecMatchers end end



El directorio predeterminado que Capybara::RSpec ahora busca incluye el Capybara::DSL y Capybara::RSpecMatchers se cambia de requests a features .

Después de cambiar el nombre de mi directorio de requests a las features , obtuve los métodos de emparejador y DSL disponibles nuevamente sin tener que incluirlos explícitamente.

Ver el siguiente commit


También asegúrese de que sus pruebas estén en el directorio / spec / features . De acuerdo con rspec-rails y capybara 2.0 , Capybara v2 y superior no estarán disponibles por defecto en las especificaciones de solicitud RSpec. Sugieren "... mover cualquier prueba que use capibaras desde especificaciones / solicitudes a especificaciones / características".


1) Agregar a la configuración ''rails_helper'':

config.include Capybara::DSL config.include Capybara::RSpecMatchers And comment out the `require ''spec_helper''` line.

2) Agregar a ''spec_helper'':

require ''rails_helper''