मैं जेस्ट का उपयोग करके एक एकल फ़ाइल का परीक्षण कैसे करूं?


359

मैं जेस्ट का उपयोग करके कई फाइलों का परीक्षण करने में सक्षम हूं, लेकिन मैं यह पता नहीं लगा सकता कि किसी एक फाइल का परीक्षण कैसे किया जाए।

मेरे पास है:

  • Daud npm install jest-cli --save-dev
  • अपडेट किया गया package.json: `{..." स्क्रिप्ट ": {" टेस्ट ":" जेस्ट "} ...}
  • कई परीक्षण लिखे।

npm testउम्मीद के मुताबिक काम करना (वर्तमान में यह 14 परीक्षण चलाता है)।

मैं किसी एकल फ़ाइल का परीक्षण कैसे कर सकता हूं, उदाहरण के लिए परीक्षण app/foo/__tests__/bar.spec.js?

मैंने npm test app/foo/__tests__/bar.spec.js(प्रोजेक्ट रूट से) चलाने की कोशिश की है , लेकिन मुझे निम्नलिखित त्रुटि मिलती है:

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'

धन्यवाद

जवाबों:


296

एक विशिष्ट परीक्षण चलाने के लिए, आपको jestकमांड का उपयोग करना होगा । npm testकाम नहीं करेगा। jestकमांड लाइन पर सीधे पहुंचने के लिए , इसे npm i -g jest-cliया के माध्यम से इंस्टॉल करें yarn global add jest-cli

तो बस के साथ अपने विशिष्ट परीक्षण चलाते हैं jest bar.spec.js

नोट : आपको अपनी परीक्षण फ़ाइल में पूर्ण पथ दर्ज करने की आवश्यकता नहीं है। तर्क की व्याख्या एक रेक्सक्सप के रूप में की जाती है। पूर्ण पथ का कोई भी हिस्सा जो विशिष्ट रूप से किसी फ़ाइल की पहचान करता है।


5
दुर्भाग्य से यह मेरे लिए काम नहीं कर रहा है। रनिंग jest bar.spec.jsदेता है jest: command not found। मैंने पुष्टि की है जेस्ट स्थापित है ( npm list -g jestदिखाता है jest@0.1.37)। एफडब्ल्यूआईडब्ल्यू, जब मैं npm testइसका उपयोग करता हूं तो उपयोग करता है jest-cli
मस्कट

4
हां, jest-cliसही मॉड्यूल है, इसे विश्व स्तर पर स्थापित करें npm install -g jest-clijest
npm में

56
यह गलत है। एनपीएम टेस्ट वर्किंग का मतलब यह नहीं है कि जेस्ट विश्व स्तर पर स्थापित है। यह सिर्फ मतलब है कि आपके प्रोजेक्ट के भीतर जेस्ट स्थापित है।
चिदो

20
जैसे @ChiedoJohn ने कहा। विश्व स्तर पर स्थापित किए बिना इसे चलाने के लिए, आप इसे अपने ऐप की जड़ से चला सकते हैं:node_modules/.bin/jest args
एडी मेन्ज जूनियर

3
यदि आप डिफ़ॉल्ट चमेली सेटअप का उपयोग कर रहे हैं, तो आप fitइसके बजाय का उपयोग करके एक परीक्षण पर ध्यान केंद्रित कर सकते हैं it
eremzeit

380

आपको बस इतना करना है कि मंत्र जाप करें:

npm test -- SomeTestFileToRun

स्टैंडअलोन --विकल्पों के अंत को चिह्नित करने के लिए * निक्स मैजिक है, जिसका अर्थ है (एनपीएम के लिए) कि इस मामले में चलाए जा रहे कमांड को पास करने के बाद सब कुछ jest। एक तरफ के रूप में, आप कहकर जेस्ट उपयोग नोट प्रदर्शित कर सकते हैं

npm test -- --help

किसी भी तरह, जप

npm test -- Foo

नामित फ़ाइल में परीक्षण चलाता है ( FooBar.js)। हालांकि, आपको ध्यान देना चाहिए:

  • जेस्ट नाम को केस-संवेदी के रूप में मानता है, इसलिए यदि आप केस-असंवेदनशील, लेकिन केस-प्रोटेक्टिंग फाइल सिस्टम (जैसे कि विंडोज एनटीएफएस) का उपयोग कर रहे हैं, तो आपको पता चल सकता है कि क्या विषमता दिख रही है।

  • जेस्ट कल्पना को उपसर्ग के रूप में मानता है।

तो उपरोक्त भोग होगा

  • भागो FooBar.js, Foo.jsऔरFooZilla.js
  • लेकिन नहीं चला foo.js

धन्यवाद, दुर्भाग्य से मुझे इसे चलाते समय एक ही त्रुटि मिलती है:npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
मस्कट

1
वहाँ कमांड लाइन के अलावा jest परीक्षण चलाने के लिए कोई वैकल्पिक तरीका है ?? , जैसे कि मैं अपने मौजूदा प्रोजेक्ट रेस्ट एप के लिए पोस्ट रिक्वेस्ट करता हूं, तो इससे मुझे सीएसआरएफ टोकन प्रॉब्लम होगी। के रूप में मैं अपने मौजूदा परियोजना के लिए परीक्षण परीक्षण सेटअप कैसे होगा ?? ताकि वह ' लोकलहोस्ट: 8000 / रेस्ट-
अपी

@ सुयोगवंत: यह कोई टिप्पणी नहीं है। यह अपने आप में एक सवाल है। आपको इसे StackOverflow पर यहाँ पूछना चाहिए।
निकोलस कैरी

1
मेरे मामले में साधारण npm test ToDoForm.test.jsकाम किया, जबकि jest ToDoForm.test.jsनहीं किया
टॉमाज़ मूलारस्की

केस सेंसिटिविटी के बारे में आपका दूसरा बिंदु आपके द्वारा दिए गए भस्म से मेल नहीं खाता है।
NSjonas

38

व्यक्तिगत परीक्षण चलाने के लिए:

npm test -t ValidationUtil # `ValidationUtil` its my module `ValidationUtil.spec.js`

-t- इसके बाद टेस्ट नाम वाले रेगेक्स रखें


1
बहुत बढ़िया! बढ़िया काम किया!
फ्लेवियो

21

का उपयोग करते हुए npm test मतलब यह नहीं है कि जेस्ट विश्व स्तर पर स्थापित है। इसका मतलब सिर्फ यह है कि "test" आपके पैकेज में jest का उपयोग करने के लिए मैप किया गया है। json

परियोजना के मूल स्तर पर मेरे लिए निम्न कार्य किया गया है:

node_modules/.bin/jest [args]

आर्ग्स वह परीक्षण फ़ाइल हो सकती है जिसे आप चलाना चाहते हैं या निर्देशिका जिसमें कई फाइलें हैं।


मेरे लिए काम किया;)
वोग्सलैंड

1
धन्यवाद! यह मेरे लिए बहुत उपयोगी था!
इसहाक

5
बायनेरिज़ को निष्पादित करने का एक शॉर्टकट है कमांड node_modules/.binका उपयोग करना npx। उदाहरण के लिएnpx jest [args]
सर्जियो माजोलेनी

16

यदि आप उपयोग yarnकरते हैं तो आप सीधे .spec.jsया .test.jsउसके बाद फाइल जोड़ सकते हैं :

yarn test src/lib/myfile.test.js

यह package.jsonएक स्थानीय पैकेज (संबंधित भागों को हटा दिया गया) के रूप में जस्ट इंस्टॉल के साथ मेरा हिस्सा है :

{
...
  "scripts": {
    "test": "jest",
    "testw": "jest --watch",
    "testc": "jest --coverage",
...
  },
  "devDependencies": {
    "jest": "^18.1.0",
    ...
  },

}


6

यदि आप चला रहे हैं npm >= 5.2.0और आपने स्थानीय रूप से एक devDependenciesसाथ jest स्थापित किया है तो npm i -d jestआप किसी विशेष फ़ाइल पर jest चला सकते हैंnpx jest /path/to/your/spec.js


5

हम कोणीय के साथ nrwl-nx का उपयोग कर रहे हैं । इस मामले में हम इस कमांड का उपयोग कर सकते हैं:

npm test <ng-project> -- --testFile "file-name-part"

टिप्पणियाँ:

  • npm testमें निर्दिष्ट परीक्षण स्क्रिप्ट चलाएगा package.json: "test:client": "ng test client"
  • इस प्रकार शेष cmd को एनजी टेस्ट के लिए पास किया जाएगा
    • <ng-project> में एक परियोजना का नाम है angular.json
      • जब आप इस पैरामीटर को छोड़ देते हैं "defaultProject"(निर्दिष्ट angular.json) का उपयोग किया जाएगा (इसलिए आपको इसे निर्दिष्ट करना होगा, जब परीक्षण आपके डिफ़ॉल्ट प्रोजेक्ट में नहीं है)
    • अगला हमें यह देखना होगा कि किस बिल्डर का उपयोग किया जाता है:
      • में angular.jsonकरने के लिए नेविगेट "project"- "<ng-project>"- "architect"-"test"
      • और चेक करें "builder", जो हमारे मामले में है:"@nrwl/jest:jest"
    • अब जब हम बिल्डर को जानते हैं, तो हमें उपलब्ध cmd- लाइन मापदंडों को खोजने की आवश्यकता है
      • कमांड लाइन पर, npm test server -- --helpसभी उपलब्ध विकल्पों को देखने के लिए चलाएँ
      • या ऑनलाइन डॉक्स की जांच करें
    • विकल्पों में --testFileसे एक है जो यहाँ प्रयोग किया जाता है

यह वही है जो मेरे लिए किया क्योंकि हम nx का उपयोग कर रहे हैं। धन्यवाद।
user906573

4

यह है कि मैं परीक्षण को पुनः आरंभ किए बिना विशिष्ट फ़ाइल पर गतिशील रूप से परीक्षण कैसे चलाता हूं। मेरी प्रतिक्रिया परियोजना बनाई गई थीcreate-react-app

इसलिए यह परिवर्तनों के लिए परीक्षण देखता है, जब मैं परिवर्तन करता हूं तो स्वचालित रूप से परीक्षण चल रहा है।

तो यह वही है जो मैं टर्मिनल पर परीक्षण के परिणामों के अंत में देखता हूं।

Test Suites: 16 passed, 16 total
Tests:       98 passed, 98 total
Snapshots:   0 total
Time:        5.048s
Ran all test suites.

Watch Usage: Press w to show more.

प्रेस डब्ल्यू

Watch Usage
  Press f to run only failed tests.
  Press o to only run tests related to changed files.
  Press q to quit watch mode.
  Press p to filter by a filename regex pattern.
  Press t to filter by a test name regex pattern.
  Press Enter to trigger a test run.

फिर P दबाएं

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern 

 Start typing to filter by a filename regex pattern.

यह 'लॉगिन' फ़ोल्डर में 'index.es6.js' फ़ाइल चलाने के बाद मैं चाहता था

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern  login/index

 Pattern matches 1 file
  src/containers/Login/index.es6.test.js

Thats कैसे मैं विशिष्ट फ़ाइल पर परीक्षण चलाते हैं।


4

द्वारा भी प्राप्त किया जा सकता है

$ jest --findRelatedTests path/to/fileA.js

रेफरी ( https://jestjs.io/docs/en/cli#running-from-the-command-line )

एनएक्स मोनोरपो में यह कैसे प्राप्त किया जा सकता है, यहां इसका जवाब है

user@host:/path/to/workspace$ npx nx test api --findRelatedTests=apps/api/src/app/mytest.spec.ts

रेफरी और अधिक जानकारी ( https://github.com/satminav/nx-qa/issues/6 )


1

मैंने अभी-अभी विश्व स्तर पर जेस्ट स्थापित किया और फिर दौड़ा jest myFileToTest.spec.jsऔर यह काम किया


1

आपके पास दो विकल्प हैं:

  • विकल्प 1: कमांड लाइन। आप निम्न कमांड चला सकते हैं
node '/Users/complete-path-to-you-project/your-project/node_modules/.bin/jest' '/Users/complete-path-to-you-project/your-project/path-to-your-file-within-the-project/your-file.spec.ts'

यह आपको विश्व स्तर पर जेस्ट स्थापित करने से बचाती है। आप अपने प्रोजेक्ट द्वारा उपयोग किए गए जेस्ट का उपयोग करते हैं।

  • विकल्प 2: यदि आप वीएस कोड का उपयोग कर रहे हैं तो आपके पास ऐसा करने के लिए एक बढ़िया प्लगइन है: जेस्ट रनर । यह आपको न केवल फ़ाइल द्वारा परीक्षण फ़ाइल चलाने की अनुमति देता है, बल्कि विशिष्ट सूट और स्पेक्स भी जिन्हें आप चलाना चाहते हैं उन परीक्षणों पर राइट क्लिक करके।

0

जेस्ट का उपयोग आप एक रेगेक्स पैटर्न के रूप में करते हैं । इसके लिए मैच होगा।

यदि आप एक विशिष्ट परीक्षण फ़ाइल चलाना चाहते हैं। फिर इसे करने का सबसे अच्छा तरीका यह है कि इसके लिए पूरा रास्ता तय किया जाए। (आप किसी निश्चित सापेक्ष पथ को भी सटीक कर सकते हैं जैसे (src / XFolder / index.spec.ts))।

पूर्ण पथ निर्देशिका में और लाइनक्स में प्रदान करने का सबसे आसान तरीका है:

jest $PWD/index.spec.ts

चर $ PWD के उपयोग पर ध्यान दें ।

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

विंडोज के लिए ! (अद्यतन किया जाएगा)


0

कोणीय और जेस्ट के साथ आप इसे "स्क्रिप्ट" के तहत package.json में जोड़ सकते हैं।

"test:debug": "node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand"

फिर विशिष्ट फ़ाइल के लिए इकाई परीक्षण चलाने के लिए आप अपने टर्मिनल में यह कमांड लिख सकते हैं

npm run test:debug modules/myModule/someTest.spec.ts

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.