Rspec-rails: Uso de fixture_file_upload con rspec-rails

Creado en 6 ene. 2021  ·  3Comentarios  ·  Fuente: rspec/rspec-rails

¿Qué versiones de Ruby, Rails y RSpec estás usando?

Versión Rubí: 2.7.2
Versión de rieles: 6.1.0
Versión RSpec: 3.10.1 (rspec-core) y 4.0.2 (rspec-rails)

Comportamiento observado

¡Hola! Estoy tratando de actualizar mi aplicación a Rails 6.1 desde 6.0.3.4 y aparece un error al usar el método fixture_file_upload . Cuando llamo a este método, se genera la siguiente excepción:

     NoMethodError:
       undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
       Did you mean?  fixture_path

Parece que ActionPack ha cambiado la implementación de fixture_file_upload y espera que haya un método $# file_fixture_path 4$#$ en la clase RailsFixtureFileWrapper .

Comportamiento esperado

Espero que este método cargue el archivo sin generar ninguna excepción.

¿Puede proporcionar una aplicación de ejemplo?

Puede ver mi aplicación de ejemplo con una prueba fallida aquí: https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb

Para la prueba, tengo un archivo pdf en la carpeta spec/fixtures . Estoy tratando de llamar al método fixture_file_upload con el nombre de ese archivo, y la prueba genera la excepción que describí anteriormente.

notas

  • Es posible que esté usando este método de manera incorrecta, pero no puedo encontrar ninguna documentación que explique cómo configurar file_fixture_path en este contexto, por lo que agradecería cualquier orientación.
  • El cambio real fue en ActionPack ( lib/action_dispatch/testing/test_process.rb ).
  • ¡Gracias por tu tiempo!

Comentario más útil

Gracias por informar. Estamos trabajando activamente en rspec-rails 4.1, puede acceder a él apuntando a una sucursal:

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

La solución está incluida allí .

Lo siento por los inconvenientes ocasionados.

No dude en informarnos si todavía no funciona para usted.

Todos 3 comentarios

Gracias por informar. Estamos trabajando activamente en rspec-rails 4.1, puede acceder a él apuntando a una sucursal:

# Gemfile
gem 'rspec-rails', github: 'rspec/rspec-rails', branch: 'rails-6-1-dev'

La solución está incluida allí .

Lo siento por los inconvenientes ocasionados.

No dude en informarnos si todavía no funciona para usted.

¡Muchas gracias por avisarme!

Como una solución temporal para esto, en lugar de jugar con mi Gemfile y asegurarme de tener todas las dependencias, simplemente definí mi propio método fixture_file_upload después de ver el código fuente de ese método:

def fixture_file_upload(path, mime_type)
  Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
¿Fue útil esta página
0 / 5 - 0 calificaciones