एकल परीक्षण फ़ाइल चलाना


138

क्या ng testपूरे टेस्ट सूट के लिए एक फ़ाइल के बजाय चलाने का कोई तरीका है ? आदर्श रूप से, मैं एक फ़ाइल को संपादित करते समय सबसे तेज़ संभव फीडबैक लूप प्राप्त करना चाहता हूं, लेकिन karmaप्रत्येक सेव पर पूरे सूट को निष्पादित करता है, जो कि एक बड़े पर्याप्त टेस्ट सूट का निर्माण करते समय थोड़ा धीमा होता है।


यह इस बात से अलग है कि कोणीय-क्ली के साथ केवल एक परीक्षण युक्ति को कैसे निष्पादित किया जाए, यह प्रश्न एक व्यक्तिगत कल्पना को चलाने के बारे में है। यह एक व्यक्तिगत फ़ाइल चलाने के बारे में है। समाधान में समान जैस्मीन कल्पना विशेषता शामिल है, लेकिन प्रश्न की प्रकृति थोड़ी अलग है।



आप यहाँ एक उत्तर पा सकते हैं: stackoverflow.com/questions/40683673/…
साहिल शिकलगर

आप यहाँ एक उत्तर पा सकते हैं: stackoverflow.com/questions/40683673/…
साहिल शिकलगर

जवाबों:


262

मुझे पता चला कि जैस्मीन आपको (फोकस के लिए?) के साथ उपसर्ग describeऔर itतरीकों की अनुमति देती है f। तो, fdescribeऔर fit। यदि आप इनमें से किसी एक का उपयोग करते हैं, तो कर्म केवल प्रासंगिक परीक्षण चलाएगा। इसलिए, वर्तमान फ़ाइल पर ध्यान केंद्रित करने के लिए, आप बस शीर्ष स्तर पर ले जा सकते हैं describeऔर इसे बदल सकते हैं fdescribe। मेरे उद्देश्यों के लिए काम करता है।


9
पौराणिक उत्तर
danday74

2
विश्वास नहीं कर सकता कि इस तरह की महत्वपूर्ण कार्यक्षमता अधिक स्पष्ट और सीधी नहीं है।
ऐश

10
यह काम करता है लेकिन यह आदर्श नहीं है क्योंकि आपको स्रोत कोड बदलने की आवश्यकता है और आप स्रोत नियंत्रण में संशोधित कोड में जाँच समाप्त कर सकते हैं।
मार्को अल्टिएरी

4
कृपया आधिकारिक दस्तावेज में लिंक जोड़ें , जब संभव हो
jgpATs2w

मैं, बहुत बढ़िया इस खोज कर रहा है
कार्लोस ई

26

यह ध्यान देने योग्य है कि आप टिप्पणी के बिना xdescribeऔर विशेष परीक्षण को अक्षम कर सकते हैंxit

xdescribe('Hello world', () => { 
  xit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});

और जैसा कि किसी ने पहले ही कहा था कि यदि आप कुछ परीक्षण पर ध्यान केंद्रित करना चाहते हैं तो fdescribeऔरfit

fdescribe('Hello world', () => { 
  fit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});

25

यह includeविकल्प के माध्यम से इन दिनों प्राप्त किया जा सकता है । https://angular.io/cli/test#options

यह एक शानदार मैच है, इसलिए एक उदाहरण के रूप में:

ng test --include='**/someFolder/*.spec.ts'

मैं इसे 8.1.0 रिलीज़ नोटों में नहीं पा सकता , लेकिन @Swoox का उल्लेख है कि यह cli संस्करण के बाद की एक विशेषता है 8.1.0। यह पता लगाने के लिए धन्यवाद।


1
यह हालिया अपडेट जैसा लगता है। क्या संस्करण की आवश्यकता है शामिल करना चाहते हैं। CLI 8.1 की जरूरत है।
स्वोक्स

V9.1

2
मैंने अभी CLI v9.1.0 में यह परीक्षण किया है और यह पूरी तरह से काम करता है।
सज्जन सिंह

9

मैंने पाया कि ng testएक अतिरिक्त विकल्प है --includeजिसका उपयोग आप एकल फ़ाइल के लिए, या किसी विशेष निर्देशिका के लिए, या फ़ाइलों के एक समूह के लिए परीक्षण चलाने में सक्षम होने के लिए कर सकते हैं:

// one file
npm run test -- --include src/app/components/component/component-name.component.spec.ts

// directory or bunch of files
npm run test -- --include src/app/components

एनजी क्लि डॉक्स


कोणीय 9 - ऐसा लगता है कि हटा दिया गया है
rmcsharry

नहीं, यह अभी भी NG 9 में उपलब्ध है
tephyr

6

आप src/test.tsनिम्न पंक्ति में जा सकते हैं और बदल सकते हैं:

const context = require.context('./', true, /\.spec\.ts$/);

सेवा

const context = require.context('./', true, /**yourcomponent.component**\.spec\.ts$/);

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


1
कड़ाई से बोलते हुए, यह सबसे सही उत्तर की तरह लगता है, भले ही यह कैसे करना है पर अधिकांश प्रश्न फिट और फ़ेसडाउन का उपयोग करके हल की गई समस्या है। कर्म में इसे और अधिक आसानी से पूरा करने के लिए एक मुद्दा है: github.com/karma-runner/karma/issues/1507 । आदर्श रूप से, हालांकि केवल नहीं, हम कर्म को कॉन्फ़िगर कर सकते हैं ताकि हम एक परीक्षण में बदलाव कर सकें, और फिर ब्राउज़र में उस पर क्लिक करके इसे अपडेट के साथ पुन: चलाएँ।
पंपकिंटहेड

3

विजुअल स्टूडियो कोड एक्सटेंशन

सबसे आसान तरीका है अपने बच्चे कोणीय-कर्म-परीक्षण-खोजकर्ता और चमेली-परीक्षण-एडाप्टर के साथ-साथ vscode-test-explorer एक्सटेंशन का उपयोग करना , यदि आप चाहते हैं तो आपको एक-एक करके वर्तमान परीक्षण की एक सूची मिल जाएगी: यहाँ छवि विवरण दर्ज करें

यह वही उत्तर है जो मैंने इस प्रश्न पर दिया था , वहां कुछ और विवरण हैं।



0

आपको जाना होगा src/test.tsऔर निम्नलिखित लाइन नंबर कोड 18 को बदल सकते हैं:

//Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);

सेवा

//Then we find all the tests.
const context = require.context('./', true, /testing.component\.spec\.ts$/);

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


-3

यदि आप अपनी कल्पना फ़ाइल को पैरामीटर के रूप में निर्दिष्ट करते हैं तो काम करता है।

उदाहरण के लिए:

एनजी परीक्षण foo.spec.ts

उम्मीद है की यह मदद करेगा।


4
क्या आप निर्दिष्ट कर सकते हैं कि आप किस संस्करण का उपयोग कर रहे हैं? 1.7.x के साथ काम नहीं कर रहा है
FrEaKmAn

4
यह मेरे लिए भी काम नहीं करता था। लेकिन मैंने इसे संशोधित कर दिया- कल्पना फ़ाइल के पथ से पहले - मुख्य विकल्प के साथ काम करने के लिए। मैंने आगे के स्लैश के साथ एक निरपेक्ष पथ का उपयोग किया। एक सापेक्ष पथ की कोशिश नहीं की है। कोणीय का उपयोग करना 6. निश्चित नहीं है कि यह सबसे अच्छा समाधान है, लेकिन यह मेरे लिए काम करता है।
user2367418
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.