هل من الممكن تجاوز كائن الموقع باستخدام التثبيت الخاص بي أثناء اختبارات الواجهة الأمامية لمكون إضافي؟

أنا أعمل حاليًا على طلب السحب هذا: FIX: presenting formatted location on User Card by merefield · Pull Request #73 · merefield/discourse-locations · GitHub

أحاول تغطية التغيير باختبار واجهة أمامية جديد.

لكن الاختبار يفشل في التشغيل بسبب عدم تعريف سمة بيانات مطلوبة.

القضية التي أواجهها هي كيفية تجاوز البيانات بنجاح في الموقع (Site) باستخدام تثبيت (fixture) موجود هنا:

والذي يحتوي على سمة إضافية يحتفظ بها الموقع (Site) عند وجود مكون المكونات الإضافية للمواقع (Locations Plugin).

… وجعلها مستمرة لبقية الاختبار!

الاختبار الجديد هنا.

لقد قمت بتحميل الموقع (Site) بنجاح باستخدام التثبيت (fixture)، على ما يبدو.

أتوقف عند نقطة المصحح هذه أثناء تشغيل qunit في المتصفح ويمكنني القول إنه تم تحميله بشكل صحيح:

  test("user card location - shows correct format", async function (assert) {
    const siteAttrs = {
      ...siteFixtures["site.json"].site,
    };
    PreloadStore.store("site", cloneJSON(siteAttrs));
    Site.resetCurrent();
    debugger;
    PreloadStore.get("site")

image

ولكن عندما يتم النقر على بطاقة المستخدم (User Card)، فإن البيانات ليست كما تتوقع وبشكل حاسم، فإن سمة country_codes مفقودة، لذا يتوقف الاختبار، هنا:

لماذا يتم فقدان بيانات الموقع (Site) التي تجاوزتها؟

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

حسنًا، هذا محبط.

يبدو أن قيمة كائن الموقع تم تعيينها هنا:

ولا يمكن تجاوزه؟

لقد تحققت من ذلك عن طريق تعديل التثبيت في النواة (هنا: discourse/app/assets/javascripts/discourse/tests/fixtures/site-fixtures.js at 93a4012ecb3af7306de0c51283d6dd2b2e90818c · discourse/discourse · GitHub) وهو يلتقط تعديلي.

لكنني لا أريد ذلك، بل أريد تجاوزه في اختبار المكون الإضافي الخاص بي باستخدام تثبيت مخزن في المكون الإضافي الخاص بي.

للتكرار، أنا قادر على القيام بذلك لنطاق كود الاختبار ولكن بمجرد تشغيل كود المكون الإضافي، يبدو أن النطاق يلتقط كائن الموقع الذي يتعلق بالتثبيت الذي تم تحميله بواسطة مساعد اختبار النواة …

:thinking:

لقد قمت أخيرًا بحل هذه المشكلة. اتضح أنه يمكنك استخدام needs تمامًا كما هو الحال مع الكائنات الأخرى:

الدليل هنا:

الكود النهائي:

  needs.site(cloneJSON(siteFixtures["country_codes.json"]));
3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.