Jest के साथ केवल एक परीक्षण चलाएँ


95

बहुत सरल, मैं जेस्ट के साथ सिर्फ एक परीक्षण चलाना चाहता हूं।

मैं लगाता हूं it.onlyया describe.onlyफिर भी यह पूरी तरह से परीक्षण करता है। मुझे लगता है कि यह मेरी आखिरी प्रतिबद्ध के बाद से सभी परीक्षण चला रहा है, लेकिन यह onlyध्वज के साथ स्पष्ट रूप से सेट, यह व्यवहार नहीं होना चाहिए ?

इस व्यवहार के कारण और एकल परीक्षण कैसे चलाया जाता है?



अगर मैं "डुप्लिकेट फ़्लैग" को स्वीकार करता हूं तो यह "आपके प्रश्न को एक डुप्लिकेट के रूप में चिह्नित करेगा, भविष्य के पाठकों को मूल प्रश्न पर निर्देशित करेगा और आगे के उत्तर को यहां पोस्ट करने से रोक देगा।" मुझे नहीं लगता कि वे बिल्कुल समान हैं, क्योंकि प्रत्येक प्रश्न और उत्तर अलग-अलग दृष्टिकोण ले रहे हैं।
jpenna

@ जजना: बस मूल प्रश्न पर गौर करें। वही जवाब दिए गए।
डेन डैस्कलेस्कु

जवाबों:


122

जेस्ट परीक्षण रन को समानांतर करता है और यह पता नहीं चलता है कि इसे कौन से परीक्षण चलाने चाहिए और कौन से नहीं चलने चाहिए। इसका मतलब है कि जब आप "फिट" का उपयोग करते हैं, तो यह केवल उस फ़ाइल में एक परीक्षण चलाएगा लेकिन फिर भी आपकी परियोजना में अन्य सभी परीक्षण फ़ाइलें चलाएगा

fit, fdescribeऔर it.only, describe.onlyएक ही उद्देश्य है, अन्य परीक्षण छोड़ें, केवल मुझे चलाएं।

स्रोत: https://github.com/facebook/jest/issues/698#issuecomment-177673281


jestजब आप अपने परीक्षण जैसे चलाते हैं, तब फ़िल्टरिंग तंत्र का उपयोग करें

jest --config=jest.config.json --watch

आप परीक्षण को फ़िल्टर कर सकते हैं testnameया filename, बस टर्मिनल में निर्देशों का पालन करें

यहां छवि विवरण दर्ज करें

प्रेस करें p, फिर एक फ़ाइल नाम लिखें

यहां छवि विवरण दर्ज करें

फिर आप उपयोग कर सकते हैं describe.onlyऔर it.onlyजो फ़िल्टर किए गए, परीक्षण किए गए फ़ाइल से अन्य सभी परीक्षणों को छोड़ देगा।


1
मैं इस फ़िल्टर को फ़ाइल द्वारा कर रहा हूं, लेकिन यह अजीब है ... इसलिए .onlyकेवल उसी फ़ाइल के परीक्षण के लिए काम करता है?
jpenna

2
मुझे वह और भी अधिक पसंद है। केवल इसलिए, क्योंकि मैं स्रोत कोड में पूर्ववत करना भूल गया था और यह प्रतिबद्ध था।
डेजीमिड

3
भले ही परीक्षणों को छोड़ दिया जाए, फिर भी यह प्रत्येक उदाहरण में परीक्षण के तहत कोड का मूल्यांकन करता है। क्या वास्तव में 2019 में केवल एक परीक्षण चलाने का एक तरीका नहीं है?
आदाम ad

@ इनाम मुझे यकीन नहीं है कि अगर मैं आपके प्रश्न को ठीक से समझ पाया हूं, तो कृपया मुझे गलत होने पर सही करें। यदि परीक्षण अलग-अलग फ़ाइलों में हैं, तो स्पष्ट रूप से परीक्षण चलाने के लिए पैटर्न का उपयोग करने पर केवल विशिष्ट फ़ाइल में कोड निष्पादित किया जाता है। जब विशिष्ट फ़ाइल के लिए कोड निष्पादित किया जाता है, तो उस फ़ाइल में पूरे कोड को पार्स किया जाता है, भले ही आप उपयोग करें it.onlyया it.skipसिंटैक्स त्रुटि वाले एकल परीक्षण के लिए, सभी परीक्षण विफल हो जाएंगे। निश्चित रूप से पैटर्न द्वारा बाहर की गई फ़ाइलों से कोड निष्पादित नहीं किया जाएगा। imgur.com/z9FlQEZ
दाविद

@inok अपने हिंडोला घटक में एक कंसोल। स्टाल और अपने परीक्षण धावक को फिर से चलाएँ। मेरे लिए, भले ही मैं if.onlyइसे Carousel घटक से कंसोल.लॉग का उपयोग करता हूं क्योंकि आपके घड़ी पैटर्न में उस घटक के लिए कई बार स्किप / अनस्किप्ड परीक्षण होते हैं।
अदम

29

it.onlyऔर describe.onlyउनके द्वारा उपयोग किए जाने वाले मॉड्यूल के लिए ही काम करें। यदि आपको कई फाइलों में परीक्षणों को फ़िल्टर करने में समस्या आ रही है, तो आप उपयोग कर सकते हैं jest -t name-of-spec, फ़िल्टरिंग परीक्षण जो कि नाम से मेल खाते हैं (विवरण या परीक्षण में नाम के विरुद्ध मिलान)।
स्रोत: https://facebook.github.io/jest/docs/en/cli.html

उदाहरण के लिए, मैं उस परीक्षण पर ध्यान केंद्रित करता हूं जो मैं वर्तमान में इस तरह लिख रहा हूं (परीक्षण स्क्रिप्ट के साथ package.json):
npm test -- -t "test foo"


4
यह अभी भी मेरे मामले में हर एक परीक्षण चलाता है और मुझे पता नहीं क्यों
केनी

एकमात्र व्याख्या जो मैं सोच सकता हूं, वह यह है कि आप एक स्ट्रिंग तर्क पारित कर रहे हैं जो हर एक परीक्षण नाम (या परीक्षण describeब्लॉक) में मौजूद है। यदि ऐसा है तो आपको सटीक परीक्षण नाम पर ध्यान देना चाहिए जिसे आप ध्यान केंद्रित करना चाहते हैं।
रॉडगोबि

यह उत्तर किसी अन्य प्रश्न के लिए अधिक उपयुक्त लगता है: stackoverflow.com/questions/42827054/…
千 千

8

ऐसी बात हे:

jest sometest.test.js -t "some expression to match a describe or a test"

यह सभी फाइलों का नाम sometest.test.jsऔर मिलान के आधार पर -t विकल्प पर परीक्षण करेगा , यदि आप केवल एक विशिष्ट फ़ाइल का परीक्षण करना चाहते हैं जो आप कर सकते हैं:

jest src/user/.../sometest.test.js

VSCode launch.jsonकॉन्फ़िगरेशन फ़ाइल में इस विकल्प को लागू करने की तलाश करने वालों के लिए जो एक विशिष्ट परीक्षण मामले में परीक्षणों को ट्रिगर करेगा: medium.com/better-programming/…
Gus

8

मेरे लिए यह काम करता है अगर मैं इस तरह 2 params का उपयोग करें:

yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"

झंडे:

--watch: is optional

-f: will do filtering of your files, so if you have a lot of tests with the same name, specify the full path to the exact file

-t: works with 'describe' name or 'it' name of your test
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.