es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué podría hacer que RSpec falle cuando una prueba de controlador ve un archivo de vista con un ayudante _path solo cuando se ejecuta toda la suite?

Después de actualizar un proyecto de Rails 6.0 a 6.1, RSpec ha estado fallando en cualquier controlador o especificación de solicitud que termina con un archivo de vista que contiene alguna forma de helper _url o _path.

El ejemplo más simple se podría escribir así;

it 'gets blah' do
  get '/blah'
end

Si /blah solo tuviera algo de texto, no habría ningún problema, sin embargo, si agregamos <%= root_path %> a esa vista (y se establece root), entonces obtendré este error;

Failure/Error: <%= root_path %>

  ActionView::Template::Error:
    wrong number of arguments (given 4, expected 0..1)

Esto es válido para prácticamente cualquier helper de ruta que he encontrado. El problema se encontró inicialmente porque form_with(modal: blah) fallaba porque polymorphic_mappings no se puede llamar en nil, y algunas inspecciones en el código de Rails sugerirían que no se estaban cargando ninguna de las rutas.

Para hacer las cosas más confusas;

  • rspec falla
  • rspec spec/controllers/specific_spec.rb:33 pasa
  • rspec spec/controllers/specific_spec.rb pasa
  • rspec spec/controllers/ pasa
  • rspec spec/ falla

El código que se ejecuta en development funciona como se esperaba, solo bajo prueba vemos los problemas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Después de actualizar un proyecto de Rails de la versión 6.0 a 6.1, RSpec falla en cualquier especificación de controlador o solicitud que termine con un archivo de vista que contiene cualquier forma de ayudante _url o _path. Este error ocurre cuando la vista contiene <%= root_path %> u cualquier otro ayudante de ruta. El mensaje de error se muestra como “ActionView::Template::Error: wrong number of arguments (given 4, expected 0..1)”. Se encontró este problema porque falla form_with(modal: blah), ya que no se puede llamar a polymorphic_mappings en nil. Tras la investigación, se encontró que el código de Rails no está cargando ninguna de las rutas.

    Curiosamente, rspec spec/controllers/specific_spec.rb:33, rspec spec/controllers/specific_spec.rb, rspec spec/controllers/ son exitosos, mientras que rspec spec/ falla. El problema surge solo durante las pruebas y no en desarrollo.

Comments are closed.