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)
¡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
.
Espero que este método cargue el archivo sin generar ninguna excepción.
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.
file_fixture_path
en este contexto, por lo que agradecería cualquier orientación.ActionPack
( lib/action_dispatch/testing/test_process.rb
).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
Comentario más útil
Gracias por informar. Estamos trabajando activamente en
rspec-rails
4.1, puede acceder a él apuntando a una sucursal:La solución está incluida allí .
Lo siento por los inconvenientes ocasionados.
No dude en informarnos si todavía no funciona para usted.