Rspec-rails: Fixture_file_upload mit rspec-rails verwenden

Erstellt am 6. Jan. 2021  ·  3Kommentare  ·  Quelle: rspec/rspec-rails

Welche Ruby-, Rails- und RSpec-Versionen verwenden Sie?

Ruby-Version: 2.7.2
Schienenversion: 6.1.0
RSpec-Version: 3.10.1 (rspec-core) und 4.0.2 (rspec-rails)

Beobachtetes Verhalten

Hallo! Ich versuche, meine App von 6.0.3.4 auf Rails 6.1 zu aktualisieren, und bei der Verwendung der fixture_file_upload -Methode tritt ein Fehler auf. Wenn ich diese Methode aufrufe, wird die folgende Ausnahme ausgelöst:

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

Es scheint, dass ActionPack die Implementierung von fixture_file_upload geändert hat und erwartet, dass es eine Methode file_fixture_path in der Klasse RailsFixtureFileWrapper gibt.

Erwartetes Verhalten

Ich erwarte, dass diese Methode die Datei hochlädt, ohne dass Ausnahmen ausgelöst werden.

Können Sie eine Beispiel-App bereitstellen?

Sie können meine Beispiel-App mit einem fehlgeschlagenen Test hier sehen: https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb

Für den Test habe ich eine pdf-Datei im Ordner spec/fixtures . Ich versuche, die Methode fixture_file_upload mit dem Namen dieser Datei aufzurufen, und der Test löst die zuvor beschriebene Ausnahme aus.

Anmerkungen

  • Möglicherweise verwende ich diese Methode nur falsch, aber ich kann keine Dokumentation finden, die erklärt, wie man file_fixture_path in diesem Kontext einstellt, daher wäre jede Anleitung willkommen.
  • Die tatsächliche Änderung betrug ActionPack ( lib/action_dispatch/testing/test_process.rb ).
  • Vielen Dank für Ihre Zeit!

Hilfreichster Kommentar

Danke für die Meldung. Wir arbeiten aktiv an rspec-rails 4.1, Sie können darauf zugreifen, indem Sie auf einen Zweig zeigen:

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

Der Fix ist dort enthalten .

Entschuldigen Sie die Unannehmlichkeiten.

Melde dich gerne wieder, wenn es bei dir immer noch nicht funktioniert.

Alle 3 Kommentare

Danke für die Meldung. Wir arbeiten aktiv an rspec-rails 4.1, Sie können darauf zugreifen, indem Sie auf einen Zweig zeigen:

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

Der Fix ist dort enthalten .

Entschuldigen Sie die Unannehmlichkeiten.

Melde dich gerne wieder, wenn es bei dir immer noch nicht funktioniert.

Vielen Dank, dass Sie mich wissen lassen!

Als vorübergehende Problemumgehung dafür habe ich, anstatt mit meiner Gemfile herumzuspielen und sicherzustellen, dass ich alle Abhängigkeiten habe, einfach meine eigene fixture_file_upload -Methode definiert, nachdem ich mir den Quellcode für diese Methode angesehen habe:

def fixture_file_upload(path, mime_type)
  Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen