Mocha: الخيار استبعاد ملفات معينة حسب النمط عند الاختبار بشكل متكرر

تم إنشاؤها على ٤ مارس ٢٠١٥  ·  71تعليقات  ·  مصدر: mochajs/mocha

أرغب في الحصول على القدرة على توفير نمط استبعاد حتى أتمكن فقط من اختبار الملفات التي تطابق نمط ملف الاختبار الخاص بي. سيسمح هذا لملفات البيانات بالتواجد مع ملفات الاختبار طالما أنها تتبع نمطًا معقولاً.

أعتقد أن هذا سيكون مجرد توفير خيار يحدد الخيار ignore في glob .

أفكار؟ يمكنني أن أجعل العلاقات العامة سريعة جدًا إذا كنت ترغب في ذلك.

feature good-first-issue help wanted usability

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

image

ال 71 كومينتر

من الأفضل عمل دليلين متوازيين ، أحدهما للاختبارات والآخر
لملفات البيانات. هذا ما فعلته.
أنا 04.03.2015 15:52 schrieb "Kyle P Davis" [email protected] :

أود الحصول على القدرة على تقديم نمط استبعاد حتى أتمكن من ذلك
اختبار الملفات التي تطابق نمط ملف الاختبار الخاص بي فقط. هذا من شأنه أن يسمح بالبيانات
تتعايش مع ملفات الاختبار طالما أنها تتبع ملف
نمط.

أعتقد أن هذا سيكون مجرد توفير خيار يحدد خيار التجاهل
في الكرة الأرضية.

أفكار؟ يمكنني أن أجعل العلاقات العامة سريعة جدًا إذا كنت ترغب في ذلك.

-
قم بالرد على هذا البريد الإلكتروني مباشرةً أو قم بعرضه على GitHub
https://github.com/mochajs/mocha/issues/1577.

كان بإمكاني (وكان لدي في الماضي) ولكني أفضل عدم القيام بذلك بعد الآن بعد أن أدركت أن تجاهل الكرة الأرضية موجود هناك.

يجب أن يكون من السهل جدًا إضافة وسيطة سطر أوامر لتعيين خيار تجاهل glob. أردت فقط الحصول على الأفكار ومناقشتها قليلاً أولاً.

أي اعتراضات علي إنشاء العلاقات العامة لهذا؟

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

بينما يمكننا نقل تطبيق testApp ، إلا أنه لا يناسب أي مكان آخر في الريبو وقد حصل على مسار نسبي لملفات معينة في مجلد الاختبار.

أعتقد أن هذا سيكون إضافة لطيفة. بالتأكيد ليست حرجة ، لكنها مفيدة.

تضمين التغريدة

إذا كنت بحاجة إلى هذا ، أعتقد أنني ربما كنت فقط

$ mocha $(find test/ ! -path '*testApp*')

لذلك أنا لست سعيدًا حقًا بهذه الفكرة. أنا من النوع الذي أتحدث عن وجود علامة recursive حتى ، حيث يمكن تحقيق الشيء نفسه باستخدام أمر shell ، Makefile ، Gruntfile.js ، gulpfile.js ، إلخ.

أعتقد أن boneskull يقدم نقطة جيدة - هذا يمكن تحقيقه بالفعل بعدة طرق. وهذا لا يشمل حقيقة أنه يمكنك هيكلة الدلائل لتجنب ذلك تمامًا. على سبيل المثال ، بالنظر إلى هذا الهيكل:

$ tree .
.
└── spec
    ├── fixtures
    ├── integration
    └── unit

4 directories, 0 files

كل ما عليك هو تحديث package.json بحيث يمكنك تشغيل npm test

  "scripts": {
    "test": "mocha spec/unit spec/integration"
  }

أو بهيكل كالتالي:

$ tree .
.
└── src
    └── models
        ├── user.js
        └── userSpec.js

2 directories, 2 files

يمكنك تشغيل المواصفات بطريقة مماثلة لمثالboneskull (سيؤدي هذا فقط إلى تشغيل الملفات التي تحتوي على Spec )

  "scripts": {
    "test": "mocha $(find src -name '*Spec.js')"
  }

تحرير: ثابت :)

danielstjules أعتقد أن هذا Spec في الاسم. ربما تريد -name '*.spec.js'

نعم ، أنت على حق! برينفارت. شكرا لتوضيح ذلك.

أمر ثابت على سبيل المثال:

  "scripts": {
    "test": "mocha $(find src -name '*Spec.js')"
  }

أعتقد أنه لا تزال هناك حالة استخدام صالحة لهذه الميزة: أميل إلى تجميع ملفاتي حسب الميزة ، لذلك يكون كل ملف اختبار بجوار الملفات التي تحتوي على المنطق الذي يختبرونه. تعمل تسمية ملفات الاختبار باستمرار مع الوسيطة file أو الخيار grep ولكني أرغب في تجاهل أشياء مثل node_modules صراحة.

لأي شخص يبحث - يمكن لـ gulp-mocha تحقيق ذلك ، أنا أكره تضمين gulp حيث لا يتعين علي ذلك.

أود أن أتوقف لحظة وأجري +1 لهذه الفكرة. على عكس مشاريع JavaScript النموذجية ، أود اتباع الطريقة التي يقوم بها GO باختبار الوحدة وأقوم بتضمين ملف المواصفات بجوار كل ملف فردي يتم اختباره. على سبيل المثال ، قد يبدو دليل في أحد مشاريعي كما يلي:

main.js
main.spec.js
utilities.js
utilities.spec.js

أجد أن هذا النوع من التنظيم يسهل العثور على الاختبار مقابل البحث في دليل واحد لملفات الاختبار ؛ تتوقع دائمًا أن يجلس الاختبار بجوار الملف الذي يختبره وأن تكون جميع ملفات spec.js في النسخة المنشورة.

نظرًا لتخطيطي غير القياسي ، ما أود أن أكون قادرًا على القيام به هو تشغيل جميع اختبارات الوحدة مع جميع مجلداتي باستثناء دليل node_modules.

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

مرحبًا ، تدعم جميع اختباراتي تنسيق *.test.js . كلها موجودة في الدليل tests . لدي حاليًا اختباران أرغب في استبعادهما ، وما زلت أحتفظ بالمسار الافتراضي لـ mocha وهو ./test/**/*.js . كيف يمكنني فعل ذلك؟

لن يعمل هنا إنشاء مجلدين منفصلين ، وعليك أن توافق على أن نقل الاختبارات بين الدلائل سيخلق الكثير من الضوضاء في VCS.

calebthebrewer الحمد لله أنا أستخدم

+ 1calebthebrewer

إن Angular 2.0 و Polymer لديهما في وضع المكون لذا أتفق معKrisSiegel. الاحتفاظ بكل التعليمات البرمجية الخاصة بك في حزم يحافظ على تسلسل هرمي للملفات نظيفًا ونمطيًا وسهل الصيانة.

هل توجد أي مشكلة متوقعة في تحميل الاختبارات باستخدام مكتبة الوعد q بطريقة مثل هذا:

import q from 'q';

import authRouterTest from '../app/routes/_authentication.router.e2e.js';

import productRouterTest from '../app/routes/_product.router.e2e.js';

import productModelTest from '../app/models/product.model.spec.js';

// Dynamically constructed sequence of functions
let funcs = [ productModelTest(), authRouterTest(), productRouterTest() ];

// This function takes an array of promise-producing functions and
// runs them sequentially.
let execTests = () => {

    let result = q();

    funcs.forEach((f) => {

        result = result.then(f);
    });

    return result;
};

// Execute tests
execTests();

بهذه الطريقة ، يمكنك استيراد ملفاتك من أي مكان والحصول على ملف اختبار واحد فقط في test/ .

يمكنك حل الوعد في آخر كتلة اختبار وختام كل اختبار على هذا النحو

import q from 'q'

export default () => {

    let Q = q.defer();

    describe('something', () => {

        it('should', (done) => {

            ...
        });
    });

    describe('something', () => {

        it('should', (done) => {

            ...
        });

        it('should', (done) => {

            ...

            Q.resolve('test complete');
        });
    });

    return Q.promise;
};

يبدو أنه يعمل بشكل جيد ، ما لم يكن هناك شيء لا أفكر فيه.

لا يزال يتعين علينا تجاهل الكرة الأرضية. لا يعد استخدام أوامر bash حلاً عبر الأنظمة الأساسية.

+1

أود حقًا استبعاد node_modules . Exclusion رفيقًا مفيدًا جدًا لـ recursive .

godspeedelbow لماذا يجب تجاهل هذا الدليل بشكل صريح؟ لا أسمع عادةً عن وجود node_modules في دليل اختبار.

FWIW ، يمكنني حقًا استخدام هذا أيضًا. لديّ مشروعان حيث يكون حجم الاختبارات أكبر بكثير من المكتبة نفسها ، وهذا سيمكنني من تنظيمها بشكل أفضل (تنتمي التركيبات إلى دليل اختبار IMHO).

يصبح تجاهل node_modules مهمًا عندما تفعل شيئًا غير متوقع (مثلي حيث احتفظ بملفات المواصفات بجوار الملف الذي يختبره مقابل الاحتفاظ بها في مجلد واحد ، بعيدًا عن الكود الذي يختبره) أو إذا كنت تريد لإجراء اختبارات الوحدة مقابل مشروع رئيسي وبعض المشاريع المضمنة فيه (ربما تكون مكتبات داخلية ، وليس في npm repo ، التي ترغب في اختبارها) ولكنك لا تريد تشغيل اختبارات الوحدة ضمن تبعياتها الخاصة .

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

KrisSiegel يمكنك دائمًا القيام بـ src/**/*.js و src/**/*.spec.js . أرى ذلك في كثير من الأحيان في مشاريع Go و Rust أكثر من البدء في جذر المشروع. في الحقيقة ، هذا الأخير غير شائع نسبيًا.

على الرغم من أنني أعتقد أنهم ينتظرون شخصًا ما ليأخذ الوقت الكافي للقيام بذلك بأنفسهم. لا يبدو أنه تصحيح صعب الإنشاء (ما لم يكن هذا المنطق عبارة عن فوضى في آلة حالة رمز السباغيتي).

أنا لست مدفوعًا للقيام بذلك شخصيًا لأنني أعمل في الواقع على إطار اختبار خاص بي ، ويهدف إلى أن أكون بديلاً كاملاً للموكا والياسمين والشريط وما إلى ذلك ، على الرغم من أنه أبسط وأكثر قوة في جوهره. لا يزال هناك الكثير من العمل قيد التنفيذ حتى بالنسبة لمشاريع الألعاب في أجهزة الصراف الآلي.

أنا أستخدم Mocha لتشغيل إطار العمل بشكل فعال. لقد استخدمت Chai في البداية للتأكيدات حتى استقرت تلك التأكيدات (تم إغلاق API عمليًا الآن ، حيث إنني أستخدم تأكيدات الإطار لاختبار نفسه).

نعم ، هذا حل بديل ، فأنا لا أرى العديد من مشاريع JavaScript منظمة بهذه الطريقة على الرغم من أنه يمكن قول الشيء نفسه حول إقران المواصفات والملف المصدر أيضًا. أنا أستخدم هذا النمط بشكل أساسي على الرغم من أنني عندما أذهب إلى مشاريع كبيرة بالفعل مع أنظمة البناء المخصصة الخاصة بها ، ليس من السهل دائمًا تغييرها.

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

KrisSiegel أنا متأكد من أنه إذا قام شخص ما بالفعل بإخراج رقعة ، فمن المحتمل أن يتم دمجها ، طالما أنها لا تتضمن بعض القواعد غير البديهية أو الخاصة أو علم إضافي FWIW ، لا يزال يتعين وجود علاقات عامة لهذا _هذا ، والسبب في إغلاق هذه المشكلة كان ضعيفًا جدًا إذا كنت تفكر في الاعتماد على النظام الأساسي . ولا أرى عددًا كبيرًا جدًا من مستخدمي Windows يرغبون في تثبيت GNU find فقط لإجراء بعض الاختبارات.

قد يكون مغلقًا ، لكن هناك وضعًا مشابهًا يحدث بالفعل لـ Node مع عمال الويب ، على الرغم من أن تطبيق Node سينحرف قليلاً ( مشكلة مغلقة ، العلاقات العامة قيد التقدم ).

+1 لما يستحق. لا يتطلب المشروع الذي قمت بإنشائه مجلد app أو src ، ولكن بدلاً من ذلك يحتوي على كمية متغيرة من المجلدات المسماة مع تطبيقات واجهة مختلفة. أرغب أيضًا في الاحتفاظ باختباراتي مجمعة لكل واجهة ، وألا أجبر على استخدام مجلد واحد للاختبارات.

أن تكون قادرًا على تحديد الملفات لتجاهلها باستخدام .mochaignore أو خيار آخر سيكون أمرًا مثاليًا ، وبهذه الطريقة يمكنني تشغيلها باستخدام **/*.spec.js glob ولا تقلق من أنها قد تتضمن اختبارات من node_modules مجلد.

تسمح جميع أدوات الإنشاء الأخرى تقريبًا بذلك ، لدينا .npmignore ، .gitignore ، .jshintignore ، و jscs يوفر خيارًا لتكوينه عبر .jscsrc . سيكون من المفيد إذا كان Mocha يدعمه أيضًا ، حيث يتجه المزيد والمزيد من الأشخاص نحو تنظيم ملف المكون / الميزة والمجلد ، بعيدًا عن نهج درج الجورب.

isiahmeadows مثل الآخرين المذكورين ، أنا عالق في هيكل مجلد لا يمكنني تغييره بسهولة ، وبالتالي فإن services/ ، routes/ ، إلخ ، موجودة في جذر المشروع تمامًا مثل node_modules هو. لقد ألهمتني وضع ملفات الاختبار بجوار الملفات التي يختبرونها. يعمل هذا بشكل رائع حقًا ، لكني أحتاج إلى أداة ثالثة (سواء كانت سطر أوامر أو gulp أو أي شيء آخر) لاستبعاد node_modules حتى يتم اختبار اختباراتي الخاصة فقط.

أرغب في تنفيذه بنفسي في المخاوي ، إذا كنت أعرف من أين أبدأ :)

MustafaHosny اللهم امين يارب :)

  "scripts": {
    "test": "mocha $(find . -name '*.spec.js' ! -ipath '*node_modules*')"
  }

مرحبا @ danielstjules شكرا! حاولت ذلك ، ولكن لسبب ما ، لا يجد find . -name '*.spec.js' ! -ipath '*node_modules*' سوى ملف اختبار واحد.

هل قمت بتحديث '*.spec.js' ليناسب النمط الذي تتبعه اختباراتك؟ على سبيل المثال لمطابقة _ all_ ملفات js ، يمكنك استخدام:

  "scripts": {
    "test": "mocha $(find . -name '*.js' ! -ipath '*node_modules*')"
  }

هتاف danielstjules ، لكن هذا لن يعمل على النوافذ على ما أعتقد ، وبينما لا يمثل هذا التطبيق مشكلة ، فأنا متردد في وضعه.

في هذه الأثناء ، لجأت إلى نقل كود التطبيق والاختبارات إلى مجلد فرعي app حتى أتمكن من استهداف هذا المجلد للاختبارات ولا تقلق بشأن node_modules أو مجلدات أخرى.

danielstjules نعم ، جميع ملفات الاختبار بتنسيق *.spec.js . لسبب ما لم يعمل في وقت سابق ، ولكن الآن عندما يعمل دون مشاكل. شكرا لهذا * حل NIX.

أريد أن أرى ذلك يتم في تخصص قادم ؛ دعم .mochaignore تحديدًا يبدو معقولًا بالنسبة لي

boneskull شكرًا ، سيكون ذلك رائعًا.

بالنسبة للإصدار الرئيسي التالي ، هل تفكر أيضًا في تنفيذ المزيد من "المعايير" .mocharc لخيارات التمرير ، والتي يمكن وضعها في جذر المشروع ، بدلاً من الاضطرار إلى استخدام mocha.opts في المجلد test ؟

هذا من شأنه أن يجعل تكوين Mocha أسهل بكثير ، وبما يتماشى مع الطريقة التي يتم بها مع الأدوات الأخرى الموجودة هناك. بالإضافة إلى ذلك ، لن يجبرنا ذلك على امتلاك مجلد test للمجلد mocha.opts . (نضع جميع اختباراتنا إلى جانب الوحدات التي يختبرونها).

adambuczynski بالتأكيد . لست من محبي mocha.opts

adambuczynski تعليق عظيم. أوافق ، أود الحصول على ملف خيار mocharc قياسي أيضًا ، لم أعد أستخدم دليل اختبار أيضًا ، لأنه من الجيد جدًا الاحتفاظ بالاختبارات بجوار الكود.

+1 ، أعتقد أن الاستبعاد مطلوب حقًا.

adambuczynskiboneskull الوثائق تشير يمكنك استخدام --opts لتحديد أي مسار لملف اختار الانضمام لديك، على الرغم من أنها لا تعطي أية أمثلة. أنا أستخدم هذا في مشروعي الحالي ويمكنني تأكيد أنه يعمل كـ mocha --opts .mocharc

شكرا @ GRUBES. في النهاية ، واصلت استخدام المجلد test لأنني أضع مساعدي إعداد الاختبار هناك أيضًا ، ولكن من الجيد معرفة أنه ممكن.

يحتوي Glob على خيار التجاهل ، لذلك لا ينبغي أن يكون مجرد إضافة خيار استبعاد وإعادة توجيهه إلى تجاهل glob أمرًا مهمًا.

تجاهل أضف نمطًا أو مصفوفة من أنماط الكرة الأرضية لاستبعاد التطابقات. ملاحظة: أنماط التجاهل تكون دائمًا في dot: true mode ، بغض النظر عن أي إعدادات أخرى.

لست متأكدا لماذا يستغرق هذا أكثر من عام. :-)

@ inf3rno راجع للشغل ، ربما كان من الممكن حل هذا في وقت مبكر لو جلس شخص ما بالفعل وكتب التصحيح.

isiahmeadows انتم ، لكن هذا لن يكون أنا. :د

فهل هذا لا يزال بحاجة إلى العلاقات العامة؟ سأكون سعيدًا لإضافة هذا ، لأنني أفضل استخدام موقع ملف الاختبار بدلاً من الدلائل المتعددة مقابل test و test-integration

2036 ، الذي هو أساسًا لنفس النوع العام من الأشياء فقط ملف بدلاً من خيار سطر أوامر ، يحتوي على PR # 2173

ربما يكون من الجيد إضافة خيار مثل --exclude .

أو دعم شيئًا مثل mocha test/*.js !test/_*.js

تم الحصول على Glob: mocha "./{,!(node_modules)/**/}*.test.js" للحصول على جميع ملفات * .test.js باستثناء node_modules ، و mocha "./test/**/!(notThisOne).js" للحصول على كل شيء في مجلد الاختبار والمجلدات الفرعية باستثناء notThisOne.js

أنظر أيضا:
https://github.com/isaacs/node-glob#glob -primer
https://github.com/isaacs/node-glob/issues/62

تضمين التغريدة

عند الركض في المحطة أحصل عليه

mocha "./{,!(node_modules)/**/}*.test.js"
-bash: !: event not found

هل يجب هروب هذه الشخصية؟

mdumouchel استخدم علامات الاقتباس المفردة. خلاف ذلك ، نعم هو كذلك.

تضمين التغريدة

لا يزال يحصل على خطأ

node_modules/mocha/lib/utils.js:630
        throw new Error("cannot resolve path (or pattern) '" + path + "'");
              ^
Error: cannot resolve path (or pattern) './{,!(node_modules)/**/}*.test.js'

انتهى بي الأمر فقط باستخدام أمر البحث

mocha $(find . -type d -name node_modules -prune -o -name '*.test.js')

mdumouchel إذا كنت تستخدم الإصدار 2.x (أي ما يتم تشغيله في npm) ، فلن يعمل ، على أي حال. سيبدأ الدعم في 3.x ، IIRC.

هذا غريب ، ظننت أنني حاولت في Bash وتمكنت من استخدام علامات الاقتباس المزدوجة. هل يعرف أي شخص بناء الجملة / الهروب الذي سيعمل على كل من Windows و Bash؟

أيضًا ، أنا متأكد تمامًا من أن الخطأ "لا يمكن حل المسار" يعني أن المسار لا يتطابق مع أي ملفات في مشروعك ؛ المسار الذي أعطيته عملًا في الإصدار الحالي عندما كان لدي ملفات اختبار ذات أسماء تنتهي بـ ".test.js" جنبًا إلى جنب مع ملفات المصدر المقابلة ، إلا إذا قمت بنسخها من الاختبار إلى تعليق المشكلة ...

انظر # 2173

تقوم Eslint بعمل رائع في تجاهل الملفات ذات --ignore-path.eslintignore ).
انظر: http://eslint.org/docs/user-guide/command-line-interface#ignoring -files

شيء مشابه للموكا سيكون رائعًا: two_hearts:


الحل الخاص بي:

eslint "test/!(fixtures)/**/*.js" "test/*.js"

هيكل ملفي

.
└── src
└── test
    └── fixtures
        └── data.js
    ├── foo.js
    └── bar.js

المشكلة: تعطيني Mocha Error: cannot resolve path (or pattern) إذا كان أي من المسارين لا يتطابق مع شيء ما ..:

حسنًا ، لذلك أنا أتراجع. هذا ليس سهل الاستخدام.

هذا ما أعتقد أنه يجب علينا القيام به:

  1. دعم --exclude <glob-or-path>
  2. دعم _multiple_ مثيلات --exclude
  3. اجمع جميع خيارات --exclude مع جميع الوسائط التي لا تتضمن خيارات في قائمة واحدة (ما يفعله globby بشكل أساسي)
  4. قم بتحميل هذه الملفات

حاليًا نحن ندعم _n_ الوسيطات غير الاختيارية ، والتي يمكن أن تكون جميعها globs ، ولكن هذه ليست سوى _additive_ ؛ هذا لا يعمل كما كنت تتوقع:

$ mocha 'src/**/*.spec.js' '!src/forbidden/**/*.spec.js'

لذلك يجب أن يعمل ما سبق ، و --exclude هو مجرد سكر مقابل ! .

بالإضافة إلى ذلك ، يبدو الدعم .mochaignore (# 2036) جيدًا ، ولكنه مشكلة منفصلة. يجب أن تكون هناك وحدة 3p يمكننا سحبها للحصول على سلوك يشبه .gitignore ؛ أنا متأكد من أن كل ما تفعله ESLint جيد بما يكفي لأغراضنا.

... وإذا لم يكن الأمر واضحًا ، فلا تستخدم الكرات الأرضية غير المسعرة في سطر الأوامر ؛ انظر # 2355

من المثير للدهشة أنه لا يوجد خيار مثل --ignore-path ، إلى جانب وضع جميع الاختبارات في مجلد tests ، لا يوجد سبب يمنعنا من إجراء الاختبارات جنبًا إلى جنب مع الوحدات.

+1
يعد تجاهل الملفات أو الدلائل حسب النمط ميزة مفيدة للغاية

تضمين التغريدة

يمكنك دائمًا عمل src / / .js و src / /.spec.js

لا ، لا يمكنك - مطابقة النمط **/* معطلة ولا تعمل بشكل متكرر.

تحرير: ScottFreeCode لديه الإجابة أدناه

مطابقة النمط **/* معطلة ولا تعمل بشكل متكرر.

هل مساراتك مقتبسة ؟

+1

image

كما هو موضح في https://github.com/zinserjan/mocha-webpack/issues/124 :

داخل src/ يوجد ملف يسمى server.ts يقوم بتشغيل خادم سريع ، ويعمل في الخلفية. عادةً ما يكون الخادم في وضع التشغيل عند تشغيل التغطية ، لذلك يكون المنفذ قيد الاستخدام بالفعل.

لذلك نحن لا نريد هذا واستبعاد هذا الملف فقط.

إبداء رأيي بأن المخاوي يحتاج إلى التجاهل لأنه حتى بعد كل هذا الوقت ، لا يزال المشرفون بحاجة إلى الإقناع.

موكا هو الكنسي. لماذا لا ترفع مستوى مجموعة الميزات عبر الأنظمة الأساسية لإطار الاختبار الذي تطمح إليه جميع أطر عمل الاختبار الأخرى؟ يجب أن نتوقف عن التطلع إلى ترك كل شيء لباش. 2017 بالفعل.

سأشير أيضًا إلى أن مستخدمي Windows ليس لديهم أي شيء معادل لـ Bash !(glob) (وهو في الواقع Bash-ism ، ولا حتى معيار POSIX).

لا ينبغي أن يكون هناك أي تبعية لـ Bash في mocha كما هي ، حيث تتم معالجتها من خلال وحدة Glob JS. (ملاحظة: قد يكون اقتباس المسارات مطلوبًا لتجنب معالجة الكرات الأرضية بشكل مختلف عن طريقة Mocha ، على سبيل المثال ** بدون امتداد globstar أو أي شيء يجعل ذلك مميزًا.)

ScottFreeCode هل تستخدم extglob: true عند استخدام glob؟ إذا كان الأمر كذلك ، فيمكن إغلاق هذا باستخدام بناء الجملة هذا كحل بديل (نظرًا لأن glob / minimatch يدعمه مع تمكين هذا الخيار).

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

ومع ذلك ، هناك ميزة محددة لوجود خيار ignore / exclude صريح. مزايا متعددة ، في الواقع:

  • أقل غموضًا
  • أسهل لتجنب الاشتباكات مع أنظمة تشغيل مختلفة الأحرف الخاصة وقواعد الاقتباس
  • قائمة التضمين مطروحًا منها قائمة الاستبعاد تكون أبسط في كثير من الحالات من قائمة التضمين ذات الأجزاء المهملة

أردت فقط أن أوضح أن الوضع الراهن لا يعني الاعتماد على أي هيكل معين. ؛ ^)

قائمة التضمين مطروحًا منها قائمة الاستبعاد تكون أبسط في كثير من الحالات من قائمة التضمين ذات الأجزاء المهملة

صحيح ، وكدت أنسى ذلك 😄

أي شخص قادم لهذه المشكلة:

الحل الآن هو استخدام globs ، حيث يجب دعم ذلك. إذا أراد شخص ما هذا السلوك المعين ، يرجى إرسال PR.

هل يعمل الخيار --exclude ؟
لا يمكن العثور عليه في المستندات .

@ sepo-one فتحت العلاقات العامة لتحديث المستند.
يمكنك رؤية جميع الخيارات المتاحة أمام mocha -h .

نعم ، لقد كنت أستخدم الإصدار القديم من الموكا. تمت الترقية وخيار --exclude موجود.
يجب تحديث المستندات على أي حال أعتقد.

شكرا outsideris

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