Jest: يجب أن يؤدي تشغيل "jest-cli" العالمية إلى التحذير بدلاً من الخطأ

تم إنشاؤها على ١٤ يوليو ٢٠١٦  ·  3تعليقات  ·  مصدر: facebook/jest

تؤدي المكالمة process.exit(1) تشغيلها عند تشغيل إصدار مثبت عالميًا من Jest إلى نتائج اختبار فردية - حتى عندما تجتاز جميع الاختبارات ، تُرجع العملية رمز خروج غير صفري ، ولا يتضح سبب ذلك على الفور.

عندما يتم تعيين jest لـ npm test (وهو اصطلاح شائع جدًا) ، تحصل على:

Please run `npm install` to use the version of Jest intended for this project.
...
163 tests passed (163 total in 30 test suites, run time 3.292s)
npm ERR! Test failed.  See above for more details.

لا توجد تفاصيل واضحة (لا يبدو سطر "الرجاء تشغيل ..." كرسالة خطأ ") ولا توجد اختبارات فاشلة ، لذا فإن تصحيح الأخطاء أمر محرج.

التوصيات

  1. أفضل إزالة اختبار إصدار الحزمة المحلية من Jest من getJest بالكامل. إذا أراد الأشخاص استخدام إصدار غير محلي من Jest دون تشغيل npm install ، فأنا لست متأكدًا من سبب الاهتمام بالحزمة؟
  2. إذا كان الاختبار مفيدًا بما يكفي للبقاء ، فيجب أن يستخدم console.warn دون التأثير على كود الخروج لأن الاختبارات قد تستمر دون مشاكل ، والتحذير هو إشارة كافية إلى أن الناتج قد لا يعكس بالضبط ما قصده المستخدم.
  3. في حالة تفضيل إرجاع رمز خروج غير صفري ، يجب أن يقدم الاختبار Error حقيقيًا console.error متبوعًا بـ process.exit(1) .
  4. إذا كنت لا ترغب حقًا في ارتكاب خطأ ، فاتصل بـ process.exit(1) الفور بدلاً من انتظار تشغيل جميع الاختبارات - إذا لم يكن من المقبول تشغيل Jest عالميًا عندما يكون هناك تبعية محددة محليًا مفقودة ، فيجب أن لا تعمل على الإطلاق.

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

mmcgahancpojer اراه هذا خطأ غير فادح عند تشغيل الدعابة داخل حزمة تابعة ضمن الغزل مساحات monorepo. يبدو أنه ربما يتم عرضه بالخطأ لأن الطريقة التي تبحث بها عن jest لا تتعامل مع الحزم التي يتم رفعها إلى جذر monorepo؟

ال 3 كومينتر

شكرًا لك على طرح هذا الأمر وعلى الوصف التفصيلي للمشكلة. لأكون صادقًا ، لقد شعرت بالضيق بشأن هذه الأشياء بنفسي ، ومن المؤكد أنها تجعل مجموعة اختبار Jest أكثر صعوبة في التعامل معها.

أوافق أيضًا على أن الطريقة التي يعمل بها هذا حاليًا لا معنى لها إذا كان Jest لا يزال ينتهي بإجراء الاختبارات على أي حال. أنا آسف لأنك ضيعت الوقت في هذا.

هل أنت على استعداد لإرسال طلب سحب؟

اقتراحي هو كما يلي:

  • إزالة process.exit(1) .
  • قم بعمل process.on('exit', () => console.log(chalk.red('The error message '))) حتى نحصل على رسالة حمراء لطيفة في نهاية تشغيل اختباري تخبرك أن شيئًا ما ليس كما ينبغي.

سيسمح للأشخاص باستخدام الإصدار الخاطئ من Jest (وهو غير موصى به ، لأنه قد يكون هناك تغييرات عاجلة) ولكنه سيستمر في إنهاء تشغيل الاختبار بشكل صحيح وسيطبع رسالة في الأسفل. ماذا تعتقد؟

cpojer هذا يعمل بالنسبة لي ، شكرًا على الاستجابة السريعة! سيتم تقديم العلاقات العامة قريبا

mmcgahancpojer اراه هذا خطأ غير فادح عند تشغيل الدعابة داخل حزمة تابعة ضمن الغزل مساحات monorepo. يبدو أنه ربما يتم عرضه بالخطأ لأن الطريقة التي تبحث بها عن jest لا تتعامل مع الحزم التي يتم رفعها إلى جذر monorepo؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات