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).
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
En cuanto a los problemas de rspec ( https://github.com/rspec/rspec-rails/issues/360 )
deberías poner
config.include Capybara::DSL
en spec_helper.rb , dentro del bloque de configuración.
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''