فشل اختبارات الإضافات مع "undefined method `test_transaction='"

لقد قمت ببناء إضافة العام الماضي وأردت التحقق من أنها لا تزال تعمل على أحدث إصدار من Discourse. بعد إعادة تهيئة بيئة التطوير الخاصة بي (كانت هناك مشاكل في ترحيل قاعدة البيانات)، تمكنت من التحقق يدويًا من أن الإضافة لا تزال تعمل. ومع ذلك، عند تشغيل اختبارات spec (التي نجحت العام الماضي عندما كتبتها)، أحصل على الخطأ التالي:

Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
      
      NoMethodError:
        undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>

لقد قمت أيضًا بتثبيت Discourse Footnote محليًا، وأحصل على نفس الخطأ عند تشغيل تلك الاختبارات.

هل يمكن لأي شخص اقتراح كيفية إصلاح بيئتي و/أو اختباراتي بحيث تنجح في الإصدار الحالي من Discourse؟

ما الأمر الذي استخدمته لتشغيل اختبارك؟

3 إعجابات

تأكد من تضمين LOAD_PLUGINS=1 عند تشغيل bin/rspec من مجلد المصدر discourse (مع ربط مجلد المستودع الخاص بالإضافات بشكل رمزي من مجلد الإضافات/).

إعجاب واحد (1)

أنا أشغّل الأمر التالي من مجلد discourse:

d/rake plugin:spec['discourse-ruby']

@riking أنا لا أضيف LOAD_PLUGINS=1 صراحةً، لكن يبدو أن ذلك يحدث على أي حال (أفترض لأنني أستخدم plugin:spec). السطر الأول بعد تنفيذ الأمر هو:

LOAD_PLUGINS=1 /usr/local/bin/ruby -S rspec ./plugins/discourse-ruby/spec/markdown_ruby_spec.rb --profile

إذا أضفتُه صراحةً كما في المثال التالي، أحصل على نفس الخطأ:

d/rake plugin:spec['discourse-ruby'] LOAD_PLUGINS=1

يبدو أن السكربت d/rake يتجه افتراضيًا إلى بيئة development، لذا ستحتاج إلى تشغيل الأمر التالي بدلاً من ذلك: RAILS_ENV=test d/rake plugin:spec['discourse-ruby']

3 إعجابات

نجح ذلك، شكرًا لك!

إعجابَين (2)