إذا كان الملحق يستخدم type: group، فيجب إنشاء المجموعة (على سبيل المثال، عند ترحيل قاعدة البيانات، أو ربما في after_initialize) لكي تمر الاختبارات (وإلا فإن الاختبار يفشل لأن الإعدادات تتضمن مجموعة غير موجودة). كان حلّي هو تحويل هذه الإعدادات من type: group إلى type: text. بهذه الطريقة، لا تفشل الإعدادات بسبب عدم وجود المجموعة، ويمكنني إنشاء المجموعات في اختباراتي باستخدام let!، وتختفي المجموعات عند تشغيل اختبارات Group.
إذا كان هناك طريقة أفضل، فسأكون سعيدًا لسماعها. يمكن القول إنه في هذه الحالة، من غير المرجح أن أحتاج إلى تغيير المجموعة المستخدمة لكل من هذه الأغراض، لذا يمكن ببساطة ترميزها في الملحق وعدم جعلها إعدادات على الإطلاق.
تأملات حول كيفية استنتاج ما سبق
لدي ملحق يحتاج إلى مجموعة من المجموعات. عند إضافة مستخدم إلى المجموعة، يتم اتخاذ إجراء في نموذجي. يعمل هذا بشكل جيد في قواعد بيانات الإنتاج والتطوير. رائع! ![]()
المشكلة هي أنه بالنسبة للاختبارات، إما أن تُنشأ المجموعات (لقد حاولت فعل ذلك في دالة تُستدعى في after_initialize ومع ملفات ثابتة يتم تشغيلها أثناء الترحيل)، مما يكسر اختبارات Group الأساسية (التي تتوقع، على سبيل المثال، وجود عدد معين من المجموعات الموجودة مسبقًا)، أو لا تُنشأ المجموعات، مما يكسر اختباراتي.
لقد قمت بتجاوز refresh_automatic_groups في نموذج Group وجعلته يحذف مجموعاتي. هذا أصلح جميع الاختبارات ما عدا اختبار واحد، لأن أسماء مجموعاتي تتضمن بعض السلاسل النصية التي تحتوي على بعض تلك السلاسل، وهذا الاختبار لا يستدعي refresh_automatic_groups.
لذا كان حلّي هو استخدام أسماء لا تكسر هذا الاختبار.
تعديل (مرة أخرى): لكنني ما زلت أواجه أخطاء في destroy_task_spec.rb و group_controller.
هل هناك حيلة بسيطة أغفلتها، أم أنني بحاجة إلى جعل هذا الملحق لا ينشئ المجموعات تلقائيًا؟