मैं अपने जावास्क्रिप्ट सामान का परीक्षण करने के लिए मोचा का उपयोग करता हूं। मेरी परीक्षण फ़ाइल में 5 परीक्षण हैं। क्या फ़ाइल में सभी परीक्षणों के बजाय एक विशिष्ट परीक्षण (या परीक्षणों का सेट) चलाना संभव है?
मैं अपने जावास्क्रिप्ट सामान का परीक्षण करने के लिए मोचा का उपयोग करता हूं। मेरी परीक्षण फ़ाइल में 5 परीक्षण हैं। क्या फ़ाइल में सभी परीक्षणों के बजाय एक विशिष्ट परीक्षण (या परीक्षणों का सेट) चलाना संभव है?
जवाबों:
मोचा के --grep
विकल्प का उपयोग करके देखें :
-g, --grep <pattern> only run tests matching <pattern>
आप किसी भी मान्य जावास्क्रिप्ट regex का उपयोग कर सकते हैं <pattern>
। उदाहरण के लिए, यदि हमारे पास test/mytest.js
:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
फिर:
$ mocha -g 'logs a'
एक परीक्षण चलाने के लिए। ध्यान दें कि यह सभी describe(name, fn)
और it(name, fn)
इनवोकेशन के नामों के बीच है ।
describe()
नेमस्पेसिंग के लिए नेस्टेड कॉल का उपयोग करने पर विचार करें ताकि विशेष सेट का पता लगाना और चयन करना आसान हो सके।
mocha some/test.js
) बिल्कुल भी काम नहीं किया। धन्यवाद!
logs a bcd
जिसमें logs a
प्रतिस्थापन शामिल है ? Regexp 0.10.2 ^$
पर काम नहीं कर रहा है।
आपके उपयोग पैटर्न के आधार पर, आप केवल उपयोग करना चाहते हैं । हम टीडीडी शैली का उपयोग करते हैं; यह इस तरह दिख रहा है:
test.only('Date part of valid Partition Key', function (done) {
//...
}
केवल यह परीक्षा सभी फाइलों / SUITES से चलेगी।
it.only
।
it.only
के साथ एक साथ काम नहीं करेगा given
की मोचा-testdata । और बाद में इसे हटाने के लिए भूलना आसान है।
eslint-plugin-mocha
एक नियम है no-exclusive-tests
जो अगर आप को हटाने के लिए भूल जाते हैं तो आप पकड़ लेंगे .only
।
यदि आप उपयोग कर रहे हैं npm test
(package.json स्क्रिप्ट का उपयोग करके) --
मोचा के माध्यम से परम पारित करने के लिए एक अतिरिक्त का उपयोग करें
जैसे npm test -- --grep "my second test"
संपादित करें : ऐसा लगता है कि --grep
थोड़ा उधम मचाते हैं (शायद अन्य तर्कों के आधार पर)। आप ऐसा कर सकते हैं:
Package.json को संशोधित करें:
"test:mocha": "mocha --grep \"<DealsList />\" .",
या वैकल्पिक --bail
रूप से कम उधम मचाते हुए उपयोग करें
npm test -- --bail
--grep
और थोड़ी सी उधम मचा सकते हैं - npm स्क्रिप्ट प्रविष्टि के भीतर मोचा के ठीक बाद डालने की कोशिश करें। वरना npm test -- --bail
पहले नाकाम रहने के परीक्षण के बाद प्रति सहिष्णु के लिए उपयोगी है
--grep
मेरे दिन को बचाने से पहले अतिरिक्त डैश पास करना ! बहुत बहुत धन्यवाद। पुनश्च। मैं विंडोज पर हूँ, चल रहा हैnpm test -- --grep @tag
वास्तव में, कोई फ़ाइल नाम से एक भी मोचा परीक्षण चला सकता है (न कि केवल ./test/**/*.spec.js
can इट () - स्ट्रिंग-ग्रीपिंग ”) यदि आप अपने mocha.opts से ग्लोब पैटर्न (जैसे ) को हटाते हैं, तो क्रमशः, एक प्रतिलिपि बनाएँ, बिना:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
यहाँ मेरा mocha.single.opts है (यह उक्त ग्लोब लाइन को याद करने में केवल अलग है)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
पृष्ठभूमि: जब आप ऑप्स-फाइल से विभिन्न स्विचों को ओवरराइड कर सकते हैं (शुरुआत के साथ --
) आप ग्लोब को ओवरराइड नहीं कर सकते । उस लिंक में कुछ स्पष्टीकरण भी हैं।
संकेत: यदि node_modules/.bin/mocha
आप भ्रमित करते हैं, तो स्थानीय पैकेज मोचा का उपयोग करें। आप भी लिख सकते हैं mocha
, अगर आपने इसे विश्व स्तर पर स्थापित किया है।
और यदि आप आराम चाहते हैं package.json
: फिर भी: **/*
अपने से शिश ग्लोब को हटा दें mocha.opts
, उन्हें यहां डालें, सभी-परीक्षण के लिए, उन्हें एकल परीक्षण के लिए छोड़ दें:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",
उपयोग:
> npm run test
क्रमश:
> npm run test-single -- test/ES6.self-test.spec.js
(मन --
!)
Warning: Could not find any test files matching pattern: $1
हाय ऊपर समाधान मेरे लिए काम नहीं किया। एकल परीक्षण चलाने का दूसरा तरीका है
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
यह एक एकल फ़ाइल से और विशिष्ट नाम के साथ एक परीक्षण मामले को चलाने में मदद करता है।
-g
और आपको फ़ाइल नाम निर्दिष्ट करने की आवश्यकता नहीं होगी। यदि आप एक अभिव्यक्ति नहीं लिख सकते हैं जो कि काफी चयनात्मक है, तो इसका मतलब है कि आप अपने परीक्षणों को ठीक से नाम नहीं दे रहे हैं।
npm test <filepath>
जैसे:
npm test test/api/controllers/test.js
यहाँ 'टेस्ट / एपी / कंट्रोलर / टेस्ट.जेएस' फ़ाइलपथ है।
आप "it.only" आज़मा सकते हैं
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
इसमें पहले वाला ही अमल करेगा
--forbid-only
सीआई / बिल्ड सर्वर पर के माध्यम से निष्पादित नहीं किए जाते हैं । .only
मुख्य शाखा में घुसने और अन्य परीक्षणों को म्यूट करने की प्रवृत्ति है क्योंकि वे अभी निष्पादित नहीं करेंगे। मुझे विभिन्न परीक्षणों को एक एंटी-फीचर चलाने के लिए कोड बदलने के वर्कफ़्लो के बारे में सोचना पड़ा। परीक्षण धावक को यह निर्धारित करना चाहिए कि कौन से परीक्षण निष्पादित किए जाने चाहिए (उर्फ टैग किए गए परीक्षण) डेवलपर नहीं।
it.only
रेपो के साथ कोड प्रतिबद्ध न करें
जांच कर रहे https://mochajs.org/#usage हम कि बस उपयोग देख
मोचा टेस्ट / मायफाइल
काम करेगा। आप अंत में '.js' को छोड़ सकते हैं।
--grep
केवल@
टैग से फ़िल्टर किया गया था ।