Rspec-rails: استخدام fixture_file_upload مع rspec-rails

تم إنشاؤها على ٦ يناير ٢٠٢١  ·  3تعليقات  ·  مصدر: rspec/rspec-rails

ما إصدارات Ruby و Rails و RSpec التي تستخدمها؟

إصدار روبي: 2.7.2
إصدار القضبان: 6.1.0
إصدار RSpec: 3.10.1 (rspec-core) و 4.0.2 (rspec-rails)

السلوك المرصود

أهلا! أحاول ترقية تطبيقي إلى Rails 6.1 من 6.0.3.4 ، وأواجه خطأً عند استخدام طريقة fixture_file_upload . عندما أسمي هذه الطريقة ، يظهر الاستثناء التالي:

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

يبدو أن ActionPack قد غيّر تنفيذ fixture_file_upload ويتوقع أن يكون هناك طريقة file_fixture_path في فئة RailsFixtureFileWrapper .

سلوك متوقع

أتوقع هذه الطريقة لتحميل الملف دون إثارة أي استثناءات.

هل يمكنك تقديم مثال للتطبيق؟

يمكنك رؤية التطبيق الخاص بي مع اختبار فاشل هنا: https://github.com/egiurleo/fixture-file-upload-test/blob/main/spec/fixture_file_upload_spec.rb

بالنسبة للاختبار ، لدي ملف pdf في المجلد spec/fixtures . أحاول استدعاء طريقة fixture_file_upload باسم هذا الملف ، ويثير الاختبار الاستثناء الذي وصفته سابقًا.

ملاحظات

  • ربما أستخدم هذه الطريقة بشكل خاطئ ، لكن لا يمكنني العثور على أي وثائق تشرح كيفية تعيين file_fixture_path في هذا السياق ، لذا فإن أي توجيه سيكون موضع تقدير.
  • كان التغيير الفعلي في ActionPack ( lib/action_dispatch/testing/test_process.rb ).
  • شكرا لوقتك!

التعليق الأكثر فائدة

شكرا على الإبلاغ. نحن نعمل بنشاط على rspec-rails 4.1 ، يمكنك الوصول إليه من خلال الإشارة إلى الفرع:

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

تم تضمين الإصلاح هناك .

آسف للإزعاج.

لا تتردد في الإبلاغ مرة أخرى إذا كان لا يزال لا يعمل من أجلك.

ال 3 كومينتر

شكرا على الإبلاغ. نحن نعمل بنشاط على rspec-rails 4.1 ، يمكنك الوصول إليه من خلال الإشارة إلى الفرع:

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

تم تضمين الإصلاح هناك .

آسف للإزعاج.

لا تتردد في الإبلاغ مرة أخرى إذا كان لا يزال لا يعمل من أجلك.

شكرا جزيلا على السماح لي أن أعرف لكم!

كحل مؤقت لهذا ، بدلاً من العبث بملف Gemfile الخاص بي والتأكد من امتلاك كل التبعيات ، قمت للتو بتعريف طريقة fixture_file_upload الخاصة بي بعد النظر إلى الكود المصدري لتلك الطريقة:

def fixture_file_upload(path, mime_type)
  Rack::Test::UploadedFile.new(Pathname.new(file_fixture_path).join(path), mime_type, false)
end
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات