2016-02-26 6 views
7

मेरे पास ./test में 2 टेस्ट फाइलें हैं Iमैं उसी कोडबेस/package.json में मोचा और कर्म परीक्षण (सर्वर-साइड और क्लाइंट-साइड) कैसे शामिल कर सकता हूं?

मान लीजिए कि test1.js एक मोचा परीक्षण है कि एक सर्वर की घूमती है और निर्धारित करने के लिए है कि वे सभी अपेक्षा के अनुरूप व्यवहार यूआरआई के खिलाफ विभिन्न अनुरोधों चलाता है करते हैं।

test2.js एक मोचा परीक्षण (angular-mocks.js सहित) विशिष्ट स्क्रिप्ट लोड और कुछ ब्राउज़रों में चलाने के लिए अपेक्षा के अनुरूप सभी कार्यक्षमता वहाँ बर्ताव करता है सुनिश्चित करने के लिए कर्म का उपयोग करता है है।

package.json में मैं test संपत्ति इस तरह के रूप में विन्यस्त है:

"scripts": { 
    "test": "./node_modules/.bin/mocha --reporter spec -t 5000" 
}, 

बढ़िया, मैंने npm test कमांड लाइन से मोचा चलाने के लिए कर सकते हैं। लेकिन ओह नोएस - मोचा मेरी दोनों स्क्रिप्ट चलाता है, और test2.js निश्चित रूप से पूरी चीज को दुर्घटनाग्रस्त कर देता है क्योंकि तर्क यह मानता है कि यह कर्म के संदर्भ में चल रहा है (क्षमा करें अगर मैं इसे सही तरीके से वर्णित नहीं कर रहा हूं)।

2 परीक्षण फोल्डर, test और test-ng या कुछ और हो सकता था, लेकिन मैं अंत में लगता है कि मैं npm test करने में सक्षम होना चाहते हैं और के परीक्षण चलाने के विभिन्न सेट है, अर्थात्:

"./node_modules/.bin/mocha --reporter spec -t 5000" 
"./node_modules/.bin/karma start" 

और उन्हें एक करने के लिए कॉन्फ़िगर सही जेएस फाइलें चलाएं। मैं एक उदाहरण खोजने के लिए पागल की तरह खोज रहा हूं जहां क्लाइंट-साइड और सर्वर-साइड टेस्ट एक ही रेपो में मौजूद हैं, लेकिन मुझे केवल ट्यूटोरियल और ब्लॉग पोस्ट और एक या दूसरे को प्रदर्शित करने के लिए पसंद है। क्या कोई मुझे सही दिशा में मदद कर सकता है?

संपादित करें: क्या मुझे इस तरह के अपने परीक्षणों के बारे में सोचने/व्यवस्थित करना चाहिए?

./tests/server/**.js 
./tests/e2e/**.js 
./tests/unit/**.js 

मैं शायद तथ्य यह है कि डिफ़ॉल्ट रूप से NPM ./test/ फ़ोल्डर का उपयोग करता है के आधार पर मान्यताओं बना रही थी।

संपादित करें 2: मैं अब कर रहा हूँ कि मैं क्या इसके बाद के संस्करण, कम या ज्यादा, और मेरे परीक्षण की तरह रेपो के रीडमी में वर्णन किया है वर्णित:

कोणीय इकाई परीक्षण कर्म के माध्यम से चलाया जा सकता है: ./node_modules/.bin/karma start karma.conf.js

कोणीय एंड-टू-एंड परीक्षण कोणमापक के माध्यम से चलाया जा सकता है: ./node_modules/.bin/protractor protractor.conf.js

एक्सप्रेस इकाई परीक्षण मोचा के माध्यम से चलाया जा सकता है: ./node_modules/.bin/mocha ...

तो अब मैं npm test का उपयोग नहीं कर रहा हूं, और मुझे आश्चर्य है कि इसका उपयोग करने के लिए क्या फायदे हैं।

+0

जो भी ने बंद करने के लिए मतदान किया है, मैं तर्क दूंगा कि यह बिल्कुल राय नहीं है। मैं प्रश्न शीर्षक का नाम बदल सकता हूं "एनपीएम स्क्रिप्ट निर्देश में आपके पास 2 अलग-अलग परीक्षण सेट कैसे हो सकते हैं" लेकिन यह स्पष्टीकरण के रूप में नहीं होगा। –

+0

क्या आप [mocha] (http://attester.ariatemplates.com/usage/configuration.html#tests) में फ़ाइलों को शामिल/बहिष्कृत कर सकते हैं और [कर्म] (http://karma-runner.github.io/ 0.13/config/config-file.html) विन्यास? –

उत्तर

4

आप अपने package.json में कुछ इस तरह रख सकते हैं:

"scripts": { 
    "unittest": "mocha --reporter spec tests/test1.js", 
    "browsertest": "mocha --reporter spec -t 5000 tests/test2.js", 
    "test": "npm run unittest && npm run browsertest" 
} 

और मोचा (या कर्मा, आदि) प्रत्येक एक स्क्रिप्ट है, जो उदाहरण के द्वारा व्यक्तिगत रूप से चलाया जा सकता है है।

  • आप NPM संकुल विश्व स्तर पर या ./node_modules/.bin/mocha तरह मंत्र का उपयोग कर स्थापित करने से बच सकते हैं, क्योंकि NPM:

    $ npm run browsertest 
    

    package.json में सीधे स्क्रिप्ट में निर्माण प्रणाली के सभी भागों डाल करने के लिए कई फायदे होते हैं पहले से ही ./node_modules/.bin के बारे में जानता है।

  • NPM लिपियों में लाना सब कुछ आसान मानक NPM संचालन (start, stop, test, आदि), जो बारी में यह आसान दूसरों के साथ सहयोग करने के लिए बनाता है, लोगों बढ़ाने के लिए और साथ ही बनाता है चौखटे (जैसे Phusion Passenger) ।
  • आप ग्रंट, Gulp, आदि

की जरूरत नहीं है और अगर आप npm run का उपयोग अपनी स्क्रिप्ट की एक सूची प्राप्त कर सकते हैं।

योग्यता के अधिक विस्तृत विवरण के लिए, कीथ सर्केल के great blog post देखें।

+0

अरघ, मैंने इसे पूरी तरह से याद किया: '▶ npm run -h; एनपीएम रन-स्क्रिप्ट [- ] '। साझा करने के लिए धन्यवाद। क्या आप 'स्क्रिप्ट्स' में कमांड को शामिल करने के किसी भी लाभ पर विस्तार से ध्यान देंगे? यह सिर्फ टाइप करने की आवश्यकता से कमांड को बचाने के लिए है? –

+0

'एनपीएम रन' के बारे में विवरण के लिए धन्यवाद, आदि। एक शानदार दिन है :) –

संबंधित मुद्दे