لدي اختبار (spec) بدأ يفشل منذ بضعة أيام. يبدو أن السبب يتعلق بـ timezone؟ لا أرى كيف يمكن أن يكون الخطأ من بلوغي، لكن ربما أغفلت شيئًا؟
require 'rails_helper'
describe TopicDefaultTag::ActionsController do
before do
Jobs.run_immediately!
end
it 'can list' do
sign_in(Fabricate(:user))
get "/topic-default-tag/list.json"
expect(response.status).to eq(200)
end
end
Running Rspec: plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb
Loading plugins while running specs
حدث خطأ أثناء تحميل ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb.
Failure/Error: UserOption.create!(user_id: id)
NoMethodError:
لا توجد طريقة `timezone` لـ #<UserOption:0x000055dd7af16ca8>
هل تقصد: timeout
# ./app/models/user.rb:1343:in `create_user_option'
# (eval):19:in `block (2 levels) in run_file'
# ./spec/rails_helper.rb:79:in `<top (required)>'
# ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb:1:in `require'
# ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb:1:in `<top (required)>'
لم يتم العثور على أمثلة.
انتهى التنفيذ خلال 0.00005 ثانية (استغرق تحميل الملفات 3.52 ثانية)
0 أمثلة، 0 إخفاقات، 1 خطأ حدث خارج نطاق الأمثلة
يبدو أنك تفتقد عمود المنطقة الزمنية في جدول user_options. هل قمت بتشغيل عمليات الترحيل مؤخرًا في قاعدة بيانات الاختبار؟ RAILS_ENV=test bin/rake db:migrate
لكن هذا لن يعمل إلا إذا كنت تستخدم rails_helper. أشك في أنك بحاجة إلى إضافة require "rails_helper" إلى أعلى ملف الـ spec الخاص بك. قد يحل هذا أيضًا المشكلات الأخرى التي تواجهها.
تعديل: همم… ربما ينبغي علينا إضافة --require rails_helper إلى ملف .rspec حتى لا نحتاج إلى إضافته يدويًا
يبدو ذلك وكأنه نوع من الأخطاء الغبية التي قد أرتكبها أنا! للأسف، لدي بالفعل require 'rails_helper'.
ربما كانت مشكلتي هي تشغيل ./bin/rake autospec بدلاً من bundle exec rake autospec، لكنها لا تزال تفشل في Travis، والآن يبدو أن هذا الاختبار يقوم بالعديد من الأشياء التي لا أفهمها بالنسبة لاختباري الصغير هذا، لكنني سأنتظر وأرى ما سيحدث.
غير متأكد من سبب كون @env[CURRENT_USER_KEY] تساوي nil بعد تسجيل دخول مستخدم داخل الاختبار.
لاحظت أنه أثناء تشغيل الاختبار، يتم استدعاء current_user عدة مرات خلال اختبار واحد فقط، وفي نقطة معينة تكون هذه السمة لها قيمة، ولكن ليس في كل استدعاء، وليس في الوقت الذي يهم.
شكرًا لك على التحقق يا ديفيد! إذن يجب أن يكون هناك شيء غريب في إعدادات التطوير الخاصة بي!
لا، لا توجد إضافات أخرى مثبتة (باستثناء الإضافات المدمجة واستكشف البيانات)، ولكن بناءً على أنه يعمل معك، فقد ألهمتني لإعداد مثيل Docker جديد ونظيف للتطوير ومحاولة تشغيله بنجاح هناك، تحياتي!