jestjs - जेस्ट का उपयोग करके मैं एकल परीक्षण कैसे चला सकता हूं?




(8)

एक भी जेस्ट परीक्षण चलाने के लिए पूर्ण आदेश

कमान:

node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"

  • <path-to-jest> :
    • Windows: node_modules\jest\bin\jest.js
    • अन्य: node_modules/.bin/jest
  • -i <you-test-file> : परीक्षण ( js या ts ) के साथ फ़ाइल का पथ
  • -c <jest-config> : एक अलग Jest config फाइल (JSON) के लिए पथ, यदि आप अपने Jest कॉन्फ़िगरेशन को package.json में रखते हैं package.json यदि आपको यह पैरामीटर निर्दिष्ट करने की आवश्यकता नहीं है (Jest इसे आपकी सहायता के बिना पाएगा)
  • -t <the-name-of-test-block> : वास्तव में यह ( describe(...) , it(...) , या test(...) ब्लॉक का एक नाम (पहला पैरामीटर) है।

उदाहरण:

describe("math tests", () => {

  it("1 + 1 = 2", () => {
    expect(1 + 1).toBe(2);
  });

  it("-1 * -1 !== -1", () => {
    expect(-1 * -1).not.toBe(-1);
  });

});

तो, आज्ञा

node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"

it("1 + 1 = 2", ...) परीक्षण it("1 + 1 = 2", ...) , लेकिन यदि आप -t को "math tests" बदलते हैं तो यह दोनों परीक्षणों को describe("math tests",...) ब्लॉक से चलाएगा।

टिप्पणियों:

  1. Windows के लिए node_modules/.bin/jest को node_modules\jest\bin\jest.js
  2. यह दृष्टिकोण आपको रनिंग स्क्रिप्ट को डीबग करने की अनुमति देता है। debugging को सक्षम करने के लिए कमांड में '--inspect-brk' पैरामीटर जोड़ें।

'पैकेज.जॉन' में एनपीएम लिपियों के माध्यम से एक एकल जेस्ट परीक्षण चलाना

जेस्ट स्थापित होने से आप एनपीएम लिपियों का उपयोग करके इस कमांड के सिंटैक्स (ऊपर) को सरल बना सकते हैं "package.json" में "scripts" अनुभाग में एक नई स्क्रिप्ट जोड़ें:

"scripts": {
  "test:math": "jest -i test/my-tests.js -t \"math tests\"",
}

इस मामले में, हम इसके लिए पूरा रास्ता लिखने के बजाय एक उपनाम 'jest' उपयोग करते हैं। इसके अलावा, हम कॉन्फिग फाइल पथ को निर्दिष्ट नहीं करते हैं क्योंकि हम इसे "package.json" में रख सकते हैं और जेस्ट डिफ़ॉल्ट रूप से इसमें दिखाई देगा। अब आप कमांड चला सकते हैं:

npm run test:math

और दो परीक्षणों के साथ "math tests" ब्लॉक निष्पादित किया जाएगा। या, ज़ाहिर है, आप इसके नाम से एक विशेष परीक्षण निर्दिष्ट कर सकते हैं।

एक अन्य विकल्प "test:math" स्क्रिप्ट के बाहर <the-name-of-test-block> पैरामीटर खींचना और इसे NPM कमांड से पास करना होगा:

package.json:

"scripts": {
  "test:math": "jest -i test/my-tests.js -t",
}

कमान:

npm run test:math "math tests"

अब आप बहुत कम कमांड के साथ रन टेस्ट (एस) के नाम का प्रबंधन कर सकते हैं।

टिप्पणियों:

  1. 'jest' कमांड NPM स्क्रिप्ट के साथ काम करेगा क्योंकि

    "./node_modules/.bin" किसी भी जीवनचक्र स्क्रिप्ट को चलाने के दौरान PATH पर्यावरण चर में पहली प्रविष्टि बनाता है, इसलिए यह ठीक काम करेगा, भले ही आपका प्रोग्राम विश्व स्तर पर स्थापित न हो ( NPM ब्लॉग )

  2. यह दृष्टिकोण डिबगिंग की अनुमति नहीं देता है क्योंकि जेस्ट को बाइनरी / सीएलआई के माध्यम से चलाया जाता है, node माध्यम से नहीं।

विजुअल स्टूडियो कोड में चयनित जेस्ट परीक्षण चल रहा है

यदि आप विज़ुअल स्टूडियो कोड का उपयोग कर रहे हैं, तो आप इसका लाभ उठा सकते हैं और वर्तमान में चयनित परीक्षण (कोड संपादक में) को F5 बटन दबाकर चला सकते हैं। ऐसा करने के लिए हमें ".vscode/launch.json" फ़ाइल में एक नया लॉन्च कॉन्फ़िगरेशन ब्लॉक बनाना होगा। उस कॉन्फ़िगरेशन में, हम पूर्वनिर्धारित चर का उपयोग करेंगे जो चलने पर उचित (दुर्भाग्य से हमेशा नहीं ) मूल्यों के साथ प्रतिस्थापित किए जाते हैं। सभी उपलब्ध में से हम केवल इन में रुचि रखते हैं:

  • ${relativeFile} - ${workspaceFolder} सापेक्ष वर्तमान में खोली गई फ़ाइल
  • ${selectedText} - सक्रिय फ़ाइल में वर्तमान चयनित पाठ

लेकिन लॉन्च कॉन्फिग लिखने से पहले हमें अपने 'package.json' में 'test' स्क्रिप्ट को जोड़ना चाहिए (यदि हमारे पास अभी तक नहीं है)।

package.json:

"scripts": {
  "test": "jest"
}

तब हम इसे अपने लॉन्च कॉन्फिग में इस्तेमाल कर सकते हैं।

कॉन्फ़िगरेशन लॉन्च करें:

{
  "type": "node",
  "request": "launch",
  "name": "Run selected Jest test",
  "runtimeExecutable": "npm",
  "runtimeArgs": [
    "run-script",
    "test"
  ],
  "args": [
    "--",
    "-i",
    "${relativeFile}",
    "-t",
    "${selectedText}"
  ],
  "console": "integratedTerminal",
}

यह वास्तव में वैसा ही करता है जैसा कि इस उत्तर में पहले वर्णित कमांडों ने किया था। अब जब सब कुछ तैयार हो गया है, तो हम कमांड मापदंडों को मैन्युअल रूप से फिर से लिखे बिना किसी भी परीक्षण को चला सकते हैं।

यहां आपको केवल इतना करना है:

  1. डिबग पैनल में वर्तमान में बनाया गया लॉन्च कॉन्‍फ़िगर चुनें:

  1. कोड संपादक में परीक्षण के साथ फ़ाइल खोलें और उस परीक्षण का नाम चुनें जिसे आप परीक्षण करना चाहते हैं (उद्धरण चिह्नों के बिना):

  1. 'F5' बटन दबाएं।

और वोइला!

अब किसी भी परीक्षा को चलाने के लिए जिसे आप संपादक में खोलना चाहते हैं, उसका नाम चुनें और F5 दबाएँ।

दुर्भाग्य से, यह विंडोज मशीनों पर "वॉइला" नहीं होगा क्योंकि वे स्थानापन्न करते हैं (जो जानता है कि क्यों) ${relativeFile} चर उलटे स्लैश वाले पथ के साथ और जेस्ट इस तरह के पथ को नहीं समझेगा।

टिप्पणियों:

  1. डीबगर के नीचे चलाने के लिए '--inspect-brk' पैरामीटर जोड़ना न भूलें।
  2. इस कॉन्फ़िगरेशन उदाहरण में, हमारे पास Jest config पैरामीटर नहीं है जो यह मानता है कि यह 'package.json' में शामिल है।

मेरे पास फ़ाइल फिक्स-ऑर्डर-टेस्ट.जेएस के भीतर एक परीक्षण 'नेस्टेड बच्चों के साथ काम करता है' है।

नीचे चल रहा है फ़ाइल में सभी परीक्षण चलाता है।

jest fix-order-test

मैं केवल एक ही परीक्षण कैसे चलाऊं? नीचे काम नहीं करता है क्योंकि यह निर्दिष्ट रेगेक्स की एक फ़ाइल की खोज करता है।

jest 'works with nested children'

यहाँ मेरा ले रहा है:

./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'

टिप्पणियाँ:

  • ./node_modules/.bin/... स्थानीय स्तर पर स्थापित पैकेज के साथ आए स्थानीय रूप से स्थापित जेस्ट (या मोचा या ...) तक पहुंचने के लिए एक शानदार तरीका है। (हाँ, आपकी npm लिपियों में आप पहले से कुछ नहीं कर सकते हैं, लेकिन यह कमांड लाइन पर आसान है ... (यह आपके डिबगिंग कॉन्फ़िगरेशन के लिए एक अच्छी शुरुआत है, जो भी आप उपयोग कर रहे हैं ...)
  • आपकी परियोजना में विन्यास विकल्पों का एक सेट नहीं हो सकता है। लेकिन अगर यह ( package.json में स्क्रिप्ट में झांकना), तो यह है, आप क्या जरूरत है।
  • --runInBand - जैसा कि कहा गया है, अपने विन्यास के बारे में नहीं जानते, लेकिन यदि आप किसी एकल परीक्षण को विकसित करने / ठीक करने पर ध्यान केंद्रित करते हैं, तो आप वेब कर्मचारियों के साथ व्यवहार नहीं करना चाहते ...
  • हां, आप अपनी फ़ाइल में संपूर्ण, स्पष्ट पथ दे सकते हैं
  • वैकल्पिक रूप से , आप -t का उपयोग उस फ़ाइल में सभी परीक्षण नहीं चलाने के लिए कर सकते हैं लेकिन केवल एक ही (यहाँ: एक, जिसके नाम में ' show expanded ' के साथ कुछ है)। उसी फ़ाइल में .only() द्वारा समान प्रभाव प्राप्त किया जा सकता है।

आप परीक्षण पर ध्यान केंद्रित करने या बाहर करने के लिए f या x का उपयोग कर सकते हैं। उदाहरण के लिए

fit('only this test will run', () => {
   expect(true).toBe(false);
});

it('this test will not run', () => {
   expect(true).toBe(false);
});

xit('this test will be ignored', () => {
   expect(true).toBe(false);
});

इस jest-watch-typeahead लिए अब एक अच्छा जेस्ट प्लगइन है यह इस प्रक्रिया को बहुत सरल बनाता है।


जैसा कि अन्य उत्तरों में उल्लेख किया गया है, test.only केवल उसी फ़ाइल में अन्य परीक्षणों को फ़िल्टर करता है । इसलिए अन्य फ़ाइलों में परीक्षण अभी भी चलेंगे। 👎

इसलिए एकल परीक्षण चलाने के लिए, दो दृष्टिकोण हैं:

विकल्प 1: यदि आपका परीक्षण नाम अद्वितीय है, तो आप वॉच मोड में t दर्ज कर सकते हैं और उस परीक्षण का नाम दर्ज कर सकते हैं जिसे आप चलाना चाहते हैं।

विकल्प 2:

  1. वॉच मोड में उस समय हिट करें जब आप जिस फ़ाइलनाम को चलाना चाहते हैं, उसके लिए एक regex दर्ज करें। (जब आप वॉच मोड में जेस्ट चलाते हैं तो इस तरह के प्रासंगिक कमांड प्रदर्शित होते हैं)।
  2. it it.only पर बदलें। it परीक्षण पर जिसे आप चलाना चाहते हैं।

ऊपर दिए गए किसी भी दृष्टिकोण के साथ, जेस्ट केवल आपके द्वारा निर्दिष्ट फ़ाइल में एकल परीक्षण चलाएगा। 👍


जैसा कि ऊपर कहा गया है, आप कमांड चला सकते हैं

jest -t 'fix-order-test'

यदि आपके पास it describe ब्लॉक के अंदर है, तो आपको दौड़ना होगा

jest -t '<describeString> <itString>'

jest प्रलेखन निम्नलिखित की सिफारिश करता है:

यदि कोई परीक्षण विफल हो रहा है, तो जांच करने वाली पहली चीजों में से एक होना चाहिए कि क्या परीक्षण विफल हो रहा है जब यह एकमात्र परीक्षण है जो चलता है। जेस्ट में यह केवल एक परीक्षण चलाने के लिए सरल है - बस अस्थायी रूप से उस test कमांड को एक test.only बदल test.only

test.only('this will be the only test that runs', () => {
  expect(true).toBe(false);
});

नवीनतम जेस्ट संस्करण के साथ , आप केवल एक टेस्ट चलाने के लिए निम्न में से एक का उपयोग कर सकते हैं, टेस्ट सूट के लिए भी।

it.only('test 1', () => {})

test.only('test 1', () => {})

fit('test 1', () => {})

jest 'test 1' काम कर सकता है भले ही परीक्षण का नाम अद्वितीय हो।