Rspec-rails: Utilisation de fixture_file_upload avec rspec-rails

Créé le 6 janv. 2021  ·  3Commentaires  ·  Source: rspec/rspec-rails

Quelles versions de Ruby, Rails et RSpec utilisez-vous ?

Version rubis : 2.7.2
Version ferroviaire : 6.1.0
Version RSpec : 3.10.1 (rspec-core) et 4.0.2 (rspec-rails)

Comportement observé

Bonjour! J'essaie de mettre à niveau mon application vers Rails 6.1 à partir de 6.0.3.4 et je rencontre une erreur lors de l'utilisation de la méthode fixture_file_upload . Lorsque j'appelle cette méthode, l'exception suivante est levée :

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

Il semble que ActionPack a changé l'implémentation de la fixture_file_upload et s'attend à ce qu'il y ait une méthode file_fixture_path sur la classe RailsFixtureFileWrapper .

Comportement attendu

Je m'attends à ce que cette méthode télécharge le fichier sans soulever d'exceptions.

Pouvez-vous fournir un exemple d'application ?

Vous pouvez voir mon exemple d'application avec un test d'échec ici : https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb

Pour le test, j'ai un fichier pdf dans le dossier spec/fixtures . J'essaie d'appeler la méthode fixture_file_upload avec le nom de ce fichier, et le test lève l'exception que j'ai décrite précédemment.

Remarques

  • J'utilise peut-être mal cette méthode, mais je ne trouve aucune documentation expliquant comment définir file_fixture_path dans ce contexte, donc tout conseil serait apprécié.
  • Le changement réel était de ActionPack ( lib/action_dispatch/testing/test_process.rb ).
  • Merci pour votre temps!

Commentaire le plus utile

Merci pour le signalement. Nous travaillons activement sur rspec-rails 4.1, vous pouvez y accéder en pointant vers une branche :

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

Le correctif y est inclus .

Désolé pour le dérangement.

N'hésitez pas à faire un retour si cela ne fonctionne toujours pas pour vous.

Tous les 3 commentaires

Merci pour le signalement. Nous travaillons activement sur rspec-rails 4.1, vous pouvez y accéder en pointant vers une branche :

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

Le correctif y est inclus .

Désolé pour le dérangement.

N'hésitez pas à faire un retour si cela ne fonctionne toujours pas pour vous.

Merci beaucoup de me le faire savoir!

Comme solution de contournement temporaire pour cela, plutôt que de jouer avec mon Gemfile et de m'assurer que j'avais toutes les dépendances, j'ai juste défini ma propre méthode fixture_file_upload après avoir regardé le code source de cette méthode :

def fixture_file_upload(path, mime_type)
  Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
Cette page vous a été utile?
0 / 5 - 0 notes