जवाबों:
संपादित करें: यह विकल्प हटा दिया गया है: https://mochajs.org/#mochaopts
यदि आप इसे अभी भी केवल mocha
कमांड लाइन पर चलकर करना चाहते हैं, लेकिन ./server-tests
इसके बजाय फ़ोल्डर में परीक्षण चलाना चाहते हैं ./test
, तो फ़ाइल में ./test/mocha.opts
बस इसके साथ एक फ़ाइल बनाएं :
server-tests
यदि आप उस फ़ोल्डर और उपनिर्देशिकाओं में सब कुछ चलाना चाहते हैं, तो इसे डालें test/mocha.opts
server-tests
--recursive
mocha.opts
कमांड लाइन के माध्यम से तर्क पारित किए जाते हैं, इसलिए पहली पंक्ति को केवल निर्देशिका बनाने के लिए जो आप परीक्षण बदलना चाहते हैं वह भी पुनर्निर्देशित करेगा ./test/
mocha.opts
फ़ाइल को आप जहाँ चाहें वहाँ रख सकते हैं, और फिर mocha
उदाहरण के लिए इसके विन्यास फाइल के लिए पथ निर्दिष्ट करने पर अमल करें :mocha --opts ./mocha.opts
इसे इस्तेमाल करो:
mocha server-test
या यदि आपके पास उपनिर्देशिका है तो इसका उपयोग करें:
mocha "server-test/**/*.js"
दोहरे उद्धरण चिह्नों के उपयोग पर ध्यान दें। यदि आप उन्हें छोड़ देते हैं तो आप उपनिर्देशिकाओं में परीक्षण चलाने में सक्षम नहीं हो सकते हैं।
mocha test/server-test
mocha ./**/*.test.js
(इसलिए मैं मॉड्यूल फ़ाइल के साथ परीक्षण फ़ाइल को कोलॉकेट कर सकता हूं)। पैटर्न ने मेरे लिए काम करना बंद कर दिया जब मैंने बाकी परीक्षणों की तुलना में फ़ाइल पदानुक्रम में एक अलग स्तर पर एक परीक्षण फ़ाइल जोड़ दी, और केवल एक अजीब गेंद फ़ाइल और दर्जनों नहीं मिलेंगे जो पदानुक्रम में एक ही स्तर पर रहते थे। । उद्धरणों में लपेटकर इसे ठीक किया।
--recursive
नीचे बताए अनुसार उपयोग करें
यहाँ एक तरीका है, यदि आपके पास आपके परीक्षण फ़ोल्डर में सबफ़ोल्डर हैं उदा
/test
/test/server-test
/test/other-test
फिर linux में आप सभी * .js फ़ाइलों को पुन: सूचीबद्ध करने के लिए फ़ाइंड कमांड का उपयोग कर सकते हैं और इसे mocha में पास कर सकते हैं:
mocha $(find test -name '*.js')
--recursive
नीचे बताए अनुसार उपयोग करें
mocha
में विन्यास में वांछित निर्देशिका संरचना निर्धारित करने का कोई विकल्प नहीं है?
ऐसा करने का अच्छा तरीका यह है कि पैकेज में एक "टेस्ट" एनपीएम स्क्रिप्ट जोड़ें। इसे सही तर्क के साथ मोचा कहते हैं। इस तरह आपका पैकेज.जसन आपके टेस्ट स्ट्रक्चर का भी वर्णन करता है। यह इन सभी क्रॉस-प्लेटफ़ॉर्म मुद्दों को अन्य उत्तरों (दोहरे बनाम एकल उद्धरण, "ढूंढें", आदि) से भी बचाता है।
"परीक्षण" निर्देशिका में सभी js फ़ाइलों को चलाने के लिए मोचा:
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
फिर केवल स्मोक टेस्ट कॉल चलाने के लिए:
npm test
आप इस तरह से सभी परियोजनाओं में सभी परीक्षणों को चलाने का मानकीकरण कर सकते हैं, इसलिए जब कोई नया डेवलपर आपकी परियोजना या किसी अन्य पर शुरू होता है, तो वे जानते हैं कि "npm परीक्षण" परीक्षण चलाएगा। इसके लिए अच्छी ऐतिहासिक मिसाल है (मावेन, उदाहरण के लिए, अधिकांश पुराने स्कूल "प्रोजेक्ट" भी बनाते हैं)। यह सुनिश्चित करता है कि सीआई को मदद मिलती है जब सभी परियोजनाओं में एक ही टेस्ट कमांड होती है।
इसी तरह, आपके पास तेज "धुआं" परीक्षण का एक उपसमुच्चय हो सकता है जिसे आप मोचा चलाना चाहते हैं:
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
फिर केवल स्मोक टेस्ट कॉल चलाने के लिए:
npm smoketest
एक अन्य सामान्य पैटर्न यह है कि वे अपने परीक्षण को उसी निर्देशिका में रखें जिस स्रोत का वे परीक्षण करते हैं, लेकिन परीक्षण फ़ाइलों को * .spec.js कहते हैं। उदाहरण के लिए: src / foo / foo.js का परीक्षण src / foo / foo.spec.js द्वारा किया जाता है।
अधिवेशन द्वारा * .spec.js नाम की सभी परीक्षाएँ चलाने के लिए:
"scripts": {
"test": "mocha **/*.spec.js"
},
फिर सभी परीक्षण कॉल चलाने के लिए:
npm test
यहाँ पैटर्न देखें? अच्छा। :) संगति हार mura ।
-G या --grep विकल्प का उपयोग न करें, यह पैटर्न इसके अंदर परीक्षण के नाम पर संचालित होता है (), फाइलसिस्टम नहीं। वर्तमान प्रलेखन भ्रामक है और / या इसके विषय में गलत है। संपूर्ण सिस्टम को फाइलसिस्टम के एक हिस्से तक सीमित करने के लिए, आप एक पैटर्न को अंतिम तर्क के रूप में पारित कर सकते हैं (इसका ध्वज नहीं)।
उदाहरण के लिए, यह कमांड आपके रिपोर्टर को कल्पना के लिए सेट करेगा लेकिन केवल सर्वर-परीक्षण निर्देशिका के अंदर तुरंत js फाइलों का परीक्षण करेगा:
mocha --reporter spec server-test/*.js
यह कमांड ऊपर की तरह ही होगा, साथ ही यह केवल उन परीक्षण मामलों को चलाएगा जहां परीक्षण (") की स्ट्रिंग / परिभाषा" Fnord: "से शुरू होती है:
mocha --reporter spec --grep "Fnord:" server-test/*.js
यदि नोड.जेएस में , मोचा v6 के रूप में कुछ नए विन्यास :
विकल्प 1: .mocharc.json
प्रोजेक्ट की मूल निर्देशिका बनाएं :
{
"spec": "path/to/test/files"
}
विकल्प 2: mocha
परियोजना में संपत्ति जोड़ें package.json
:
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
अधिक विकल्प यहाँ हैं ।
test_directory
उप-निर्देशिकाओं में सभी फ़ाइलें चलाएं जो मेल खाते होंtest.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
या --recursive
स्विच का उपयोग करें
mocha --recursive test_directory/
अब एक दिन (वर्ष 2020) आप मोचा कॉन्फ़िगरेशन फ़ाइल का उपयोग करके इसे संभाल सकते हैं :
चरण 1: अपने आवेदन के मूल स्थान पर .mocharc.js फ़ाइल बनाएँ
चरण 2: मोचा विन्यास फाइल में नीचे कोड जोड़ें :
'use strict';
module.exports = {
spec: 'src/app/**/*.test.js'
};
Config फाइल में अधिक विकल्प के लिए इस लिंक को देखें: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
मैं विंडोज 7 पर नोड.जेएस v0.10.0 और मोचा v1.8.2 और एनपीएम v1.2.14 का उपयोग कर रहा हूं। मैं सिर्फ अपने परीक्षण को खोजने के लिए पथ परीक्षण / इकाई का उपयोग करने के लिए मोचा प्राप्त करने की कोशिश कर रहा था, लंबे समय तक खर्च करने और कई चीजों को आज़माने के बाद,
"परीक्षण / इकाई / *। Js" विकल्प का उपयोग करना विंडोज़ पर काम नहीं करता है। अच्छे कारणों के लिए कि विंडोज़ शेल वाइल्डकार्ड जैसे कि अनिक्सन का विस्तार नहीं करता है।
हालांकि "परीक्षण / इकाई" का उपयोग फ़ाइल पैटर्न के बिना काम करता है। जैसे। "मोचा टेस्ट / यूनिट" टेस्ट / यूनिट फ़ोल्डर में पाई गई सभी फाइलों को चलाता है।
यह केवल एक फ़ोल्डर फ़ाइलों को परीक्षण के रूप में चलाता है, लेकिन आप कई निर्देशिका नामों को मापदंडों के रूप में पारित कर सकते हैं।
एकल परीक्षण फ़ाइल चलाने के लिए आप पूर्ण पथ और फ़ाइल नाम निर्दिष्ट कर सकते हैं। जैसे। "मोचा टेस्ट / यूनिट / mytest1.js"
मैं वास्तव में npm "स्क्रिप्ट" के लिए package.json में सेटअप करता हूं: {"टेस्ट": "मोचा टेस्ट / यूनिट"},
ताकि 'एनपीएम टेस्ट' मेरी यूनिट टेस्ट चलाए।
--recursive
निम्न की तरह विकल्प का उपयोग कर सकता है :mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
विंडोज पर काम करता है। भी node_modules\.bin\mocha "**\*.js"
काम करता है (मेरा असली मामला)। लेकिन मैं node_modules निर्देशिका को बाहर करने का एक तरीका ढूंढ रहा हूं । (मैं भी gulpfile.js का उपयोग करता हूं, लेकिन कभी-कभी मुझे सीधे मोचा के साथ परीक्षण शुरू करने की आवश्यकता होती है)
यदि आप उपयोग कर रहे हैं nodejs
, आपके package.json
अंडर मेंscripts
global (-g)
प्रतिष्ठानों: "test": "mocha server-test"
या "test": "mocha server-test/**/*.js"
सहायक दस्तावेज़ों के लिएproject
प्रतिष्ठानों: "test": "node_modules/mocha/bin/mocha server-test"
या "test": "node_modules/mocha/bin/mocha server-test/**/*.js"
सहायक दस्तावेज़ों के लिएतो बस अपने परीक्षणों को सामान्य रूप से चलाएं npm test
npm run mocha "./test/*.spec.js!(~)"
ग्लोब तर्क की अनदेखी कर रहा है, लेकिन node_modules/.bin/mocha "./test/*.spec.js!(~)"
नहीं करता है।
npm run mocha -- yourArgs
जैसा कि @ jeff-Dickey ने सुझाव दिया है, अपनी परियोजना की जड़ में, नामक एक फ़ोल्डर बनाएं test
। उस फोल्डर में, नामक एक फाइल बनाते हैंmocha.opts
। अब जहां मैं जेफ के जवाब में सुधार करने की कोशिश करता हूं, मेरे लिए जो काम किया, वह सिर्फ एक टेस्ट फ़ोल्डर के नाम को निर्दिष्ट करने के बजाय, मैंने इस लाइन को जोड़कर अपने प्रोजेक्ट में चलने के लिए सभी परीक्षणों को खोजने के लिए एक पैटर्न निर्दिष्ट किया:
*/tests/*.js --recursive
में mocha.opts
यदि आप इसके बजाय परीक्षण के लिए सटीक फ़ोल्डर निर्दिष्ट करना चाहते हैं, तो मैंने ऐसा कुछ किया:
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
मुझे उम्मीद है कि यह किसी को भी मदद करता है जिसे अन्य उत्तर प्रदान करने की तुलना में अधिक आवश्यकता होती है
.only
और.skip
प्रबंधित कर सकते हैं दौड़ रहे है। एक विशिष्ट विशेषता के विकास के दौरान महत्वपूर्ण है जब आप पूरे समय चलने के लिए पूरे परीक्षण सूट की प्रतीक्षा नहीं करना चाहते हैं।